احمد رفیعی
احمد رفیعی
خواندن ۶ دقیقه·۶ سال پیش

save, load, restart, kill, inspect توضیح دستورات داکر – این قسمت

دستور docker save:

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

docker save --help
docker save --help

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

$ docker save busybox > busybox.tar $ ls -sh busybox.tar 2.7M busybox.tar
$ docker save --output busybox.tar busybox $ ls -sh busybox.tar 2.7M busybox.tar
$ docker save -o fedora-all.tar fedora
$ docker save -o fedora-latest.tar fedora:latest

دستور docker load:

با استفاده از این دستور می‌توانید ایمیج‌هایی که توسط دستور save به صورت آرشیو کردید را در سرویس‌دهنده‌ی داکر سیستم خود قرار دهید. با استفاده از این دستور می‌توانید در سرور مقصد از ایمیج‌هایی که backup کردید استفاده کنید. این دستور دارای آپشن i- می‌باشد که فایل آرشیو ورودی را مشخص می‌کند.

docker load --help
docker load --help

در مثال‌های زیر نحوه‌ی استفاده از این دستور مشخص شده است.

$ docker docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE
$ docker load < busybox.tar.gz Loaded image: busybox:latest
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 769b9341d937 7 weeks ago 2.489 MB
$ docker load --input fedora.tar Loaded image: fedora:rawhide Loaded image: fedora:20
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE busybox latest 769b9341d937 7 weeks ago 2.489 MB fedora rawhide 0d20aec6529d 7 weeks ago 387 MB fedora 20 58394af37342 7 weeks ago 385.5 MB fedora heisenbug 58394af37342 7 weeks ago 385.5 MB fedora latest 58394af37342 7 weeks ago 385.5 MB

دستور docker restart:

با استفاده از این دستور یک یا تعدادی کانتینر را می‌توانید ریستارت کنید. این دستور تنها یک آپشن دارد به نام t- که با استفاده از آن می‌توانید برای ریستارت زمان تعیین کنید.

docker restart --help
docker restart --help

در مثال زیر نحوه‌ی استفاده از دستور نمایش داده شده است.

$ docker restart my_container $ docker restart -t 10 my_container

دستور docker kill:

با استفاده از این دستور یک تا تعدادی از کانتینرها را می‌توان kill کرد. تنها آپشن این دستور s- می‌باشد که با استفاده از آن می‌توان سیگنال مد نظر خود را به کانتینر ارسال کرد.

docker kill --help
docker kill --help

برخی از استفاده‌های این دستور در ادامه قرار داده شده است.

$ docker kill my_container

با استفاده از دستور kill -l در لینوکس می‌توانید لیست سیگنال‌های دستور kill را مشاهده کنید. شما هم می‌توانید عدد سیگنال مد نظرتون یا اختصار آن را قرار بدید. دقیقا همانند مثال زیر که SIGHUP همان HUP بوده که عدد سیگنال آن ۱ می‌باشد. هر سه دستور پایین دقیقا یک کار را انجام می‌دهند.

$ docker kill --signal=SIGHUP my_container
$ docker kill --signal=HUP my_container
$ docker kill --signal=1 my_container

در تصویر زیر فهرست تمام سیگنال‌های مربوط به دستور kill را مشاهده می‌کنید.

kill -l
kill -l

منبع برای دستور kill و منبع برای دستور docker kill

دستور docker inspect:

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

docker inspect --help
docker inspect --help

آپشن‌های مربوط به این دستور رو در تصویر بالا مشاهده می‌کنید. همانند دستورات قبل با استفاده از آپشن format می‌توانید خروجی دستور را تغییر داده و همانند چیزی که خودتون می‌خواهید آن را تنظیم کنید. اما بر خلاف دستورات قبلی جدول مشخص از موارد مربوط به این آپشن پیدا نکردم که در اختیار شما قرار بدم که دلیل اصلی آن نیز تعدد و تنوع این تنظیمات می‌تواند ‌باشد. اما الگوی مشخص آن به این صورت است که اگر نام هر قسمت را در فرمت مشخص زیر قرار بدهید تمام اون قسمت را به شما نمایش می‌دهد. اما اگر مد نظر شما قسمتی مشخصی است تمام شاخه‌های آن را نیز فهرست نمایید. به مثال زیر توجه کنید.در دستور اول کل تنظیمات مربوط به شبکه این کانتینر را در خروجی قرار داده‌ام.

$ docker inspect -f '{{.NetworkSettings}}' my_container {{ 1e652cd4275553a99e5b8e51fab5740c37aee1df52f71e016c21fbe00d211d78 false 0 map[] /var/run/docker/netns/1e652cd42755 [] []} {3f93fe4ec940f332ce5e9ee25ba4866a3bdbb8d598338e72a4a59d2f0cfbdc5f 172.17.0.1 0 172.17.0.2 16 02:42:ac:11:00:02} map[bridge:0xc4205220c0]}

با دستور زیر می‌توانید دستور بالا را به صورت json خروجی بگیرید.

$ docker inspect -f '{{json .NetworkSettings}}' my_container {"Bridge":"","SandboxID":"1e652cd4275553a99e5b8e51fab5740c37aee1df52f71e016c21fbe00d211d78","HairpinMode":false,"LinkLocalIPv6Address":"","LinkLocalIPv6PrefixLen":0,"Ports":{},"SandboxKey":"/var/run/docker/netns/1e652cd42755","SecondaryIPAddresses":null,"SecondaryIPv6Addresses":null,"EndpointID":"3f93fe4ec940f332ce5e9ee25ba4866a3bdbb8d598338e72a4a59d2f0cfbdc5f","Gateway":"172.17.0.1","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","MacAddress":"02:42:ac:11:00:02","Networks":{"bridge":{"IPAMConfig":null,"Links":null,"Aliases":null, "NetworkID":"0f1ddf9690bbf50632242487d790a2b1e22f51e9e98b99c34ded3136c994fef1","EndpointID":"3f93fe4ec940f332ce5e9ee25ba4866a3bdbb8d598338e72a4a59d2f0cfbdc5f","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02","DriverOpts":null}}}

در دستور دوم نیاز داشتم که ip کانتینر را به صورت مشخص جدا کنم و نمایش فقط بر اساس آن باشد. اگر از دستور inspect استفاده کنید تمام این قسمت‌ها به صورت زیرمجموعه یکدیگر قرار دارد که می‌توانید آنها به این صورت در کنار هم قرار دهید و استفاده کنید. البته می‌توانید به اختصار فقط شاخه‌ی اصلی که همان NetworkSettings می‌باشد و سپس IPAddress را قرار دهید.

$ docker inspect -f '{{.NetworkSettings.Networks.bridge.IPAddress}}' my_container 172.17.0.2 $ docker inspect -f '{{.NetworkSettings.IPAddress}}' my_container 172.17.0.2

در دستور سوم برخی از موارد دیگه همانند اسم کانتینر را در ابتدا قرار داده و در انتهای فرمت نیز عبارت مد نظر خودم رو اضافه کردم.

$ docker inspect -f '{{.Name}} + {{.NetworkSettings.Networks.bridge.IPAddress}} +++ DockerMe.ir' my_container
/my_container + 172.17.0.2 +++ DockerMe.ir

در این لینک و این لینک توضیحات خوبی برای انواع فرمت‌های خروجی ارائه شده است. شما می‌توانید مشخص کنید که این خروجی به چه صورت به شما نمایش داده شود. توضیح بیشتر این موضوع به نظرم از حوصله‌ی این متن خارج است شاید بعدا بر حسب نیاز بیشتر در موردش صحبت کنیم.


آموزش داکر و پلتفرم
آموزش داکر و پلتفرم
https://dockerme.ir/

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