docker-commands

دستور docker events:

با استفاده از این دستور می‌توانید events های سرویس داکر خودتون رو بررسی کنید. هر اتفاقی در سرویس‌ دهنده‌ی داکر در تمامی کامپوننت‌های آن رخ دهد می‌توانید لاگ آن را مشاهده کنید.

docker events --help

آپشن filter: با استفاده از این آپشن می‌توانید برای خروجی ارائه شده فیلتر بنویسید. تغییرات در هر آبجکت داکر همانند ایمیج و کانتینر و … را در این لاگ اضافه می‌کند. لیست این موارد در این لینک فهرست شده است. این لیست تقریبا تمام مواردی که مورد نیاز است را شامل می‌شود. به خاطر گسترده بودن لاگ‌های خروجی، این آپشن اهمیت خیلی زیادی دارد زیرا می‌توان با استفاده از آن لاگ را متناسب با هدفی که داریم جدا کنیم و مشاهده کنیم. در ادامه لیست مواردی که می‌توان در فیلتر قرار داده آورده شده است.

docker events --filter

آپشن format: با استفاده از این آپشن می‌توانید فرمت خروجی را متناسب با نظر خودتون تغییر بدهید. قالبی که از آن پیروی می‌کند همان قالب پیش‌فرض Go می‌باشد که در این لینک می‌توانید آن را بررسی کنید. یکی از فرمت‌های اصلی ارائه خروجی با قالب json است.

آپشن since: برای این است که رخدادها را از چه زمانی به شما نمایش دهد.

آپشن until: برای این است که رخداد‌ها را تا چه زمانی به شما نمایش دهد.

در مثال‌های زیر به صورت کامل این موضوع مشخص می‌باشد.

$ docker events --format '{{json .}}'
{"status":"create","id":"196016a57679bf42424484918746a9474cd905dd993c4d0f4..    {"status":"attach","id":"196016a57679bf42424484918746a9474cd905dd993c4d0f4..

$ docker events --since '10m'
2017-01-05T00:35:41.241772953+08:00 volume create testVol (driver=local)
2017-01-05T00:35:58.859401177+08:00 container create d9cd...4d70 (image=alpine:latest, name=test)

$ docker events --filter 'event=stop'
2017-01-05T00:40:22.880175420+08:00 container stop 0fdb...ff37 (image=alpine:latest, name=test)
2017-01-05T00:41:17.888104182+08:00 container stop 2a8f...4e78 (image=alpine, name=kickass_brattain)
$ docker events --filter 'image=alpine'
2017-01-05T00:41:55.784240236+08:00 container create d9cd...4d70 (image=alpine, name=happy_meitner)
2017-01-05T00:41:55.913156783+08:00 container start d9cd...4d70 (image=alpine, name=happy_meitner)
$ docker events --filter 'container=test'
2017-01-05T00:43:00.139719934+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
2017-01-05T00:43:09.259951086+08:00 container kill 0fdb...ff37 (image=alpine:latest, name=test, signal=15)
$ docker events --filter 'container=test' --filter 'container=d9cdb1525ea8'
2017-01-05T00:44:11.517071981+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
2017-01-05T00:44:17.685870901+08:00 container start d9cd...4d70 (image=alpine, name=happy_meitner)

این دستور می‌تواند در فرآیند رفع مشکل بسیار موثر باشد در این لینک مثال‌های مختلفی از این موضوع زده شده است که می‌تواند کارگشا باشد.

منبع

دستور docker exec:

با استفاده از این دستور می‌توانید در کانتینرهای در حال کار دستور اجرا کنید.

docker exec --help

آپشن detach: با استفاده از این آپشن دستور شما در background کانتینر اجرا می‌شود.

آپشن detach-keys: با این آپشن کلید‌‌های مربوط به جدا شدن از کانتینر را نادیده می‌گیرد.

آپشن env: می‌توان متغییرهای محیطی (environment variables) برای آن تنظیم کرد.

آپشن interactive: با استفاده از این دستور می‌توانید به صورت تعاملی با کانتینر ارتباط داشته باشید.

آپشن privileged: دستور را با دسترسی بالا اجرا می‌کند.

آپشن tty: با این دستور می‌توانید از کانتینر خود یک tty داشته باشید.

آپشن user: می‌توان user یا uid و group یا gid برای آن تنظیم کرد.

آپشن workdir: می‌توانید دستور مد نظر خود را در دایرکتوری که مشخص می‌کنید اجرا شود.

این دستور بسیار کاربردی بوده و ممکن است در طی کار با کانتینرها بارها به این دستور نیاز پیدا کنید. به مثال‌های زیر توجه کنید.

$ docker exec -d my_container touch /tmp/execWorks
$ docker exec -it my_container bash
$ docker exec -it -e VAR=1 my_container bash
$ docker exec -it my_container pwd
/

منبع

دستور docker export:

با استفاده از این دستور می‌توانید فایل‌ سیستم‌ کانتینر خود را به صورت آرشیو برای خودتون نگه دارید. این دستور تنها یک آپشن دارد که برای مشخص کردن خروجی است.

docker export --help

آپشن o-: با استفاده از این آپشن می‌توان مسیر و نام فایلی که ایجاد می‌شود را مشخص کرد.

به مثال‌های زیر توجه کنید.

$ docker export my_container > latest.tar
$ docker export --output="latest.tar" my_container

دستور docker import:

با استفاده از این دستور فایل‌سیستمی که قبلا export کرده بودیم و آرشیو شده بود را می‌توانید به صورت فایل‌سیستم یک ایمیج جدید آن را وارد کنیم.

docker import --help

بدون آپشن می‌توانید فایل tar را از مسیری یا از یک url فراخوانی کنید و آن را با نام یک ایمیج جدید ذخیره نمایید.

آپشن change: با استفاده از این آپشن می‌توانید در هنگام ایجاد ایمیج از دستورات داکرفایل در آن استفاده کنید و در ایمیج نهایی آنها را قرار دهید. دستورالعمل‌هایی که از داکرفایل می‌توانید اینجا استفاده کنید در ادامه لیست شده است.

CMD | ENTRYPOINT | ENV | EXPOSE | ONBUILD | USER | VOLUME | WORKDIR 

آپشن message: هنگام ایجاد ایمیج پیغامی باهاش ذخیره کنید که به شما بعدا در بررسی آن کمک کند.

به مثال‌های زیر توجه کنید.

$ sudo tar -c . | docker import --change "ENV DEBUG true" - exampleimagedir
$ sudo tar -c . | docker import - exampleimagedir  
$ docker import /path/to/exampleimage.tgz
$ cat exampleimage.tgz | docker import --message "New image imported from tarball" - exampleimagelocal:new
$ docker import http://example.com/exampleimage.tgz

منبع