با استفاده از این دستور میتوانید یک یا تعدادی ایمیج را در یک فایل tar ذخیره کرده و آنها را منتقل کنید. از این روش برای backup از ایمیجها هم استفاده میشود. این دستور برای مواقعی که در سرویس دسترسی به اینترنت ندارید یا اینکه در اون سرور پروکسی برای دریافت ایمیج ندارید میتواند کمک کند.
تنها آپشن این دستور 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
با استفاده از این دستور میتوانید ایمیجهایی که توسط دستور save به صورت آرشیو کردید را در سرویسدهندهی داکر سیستم خود قرار دهید. با استفاده از این دستور میتوانید در سرور مقصد از ایمیجهایی که backup کردید استفاده کنید. این دستور دارای آپشن i- میباشد که فایل آرشیو ورودی را مشخص میکند.
در مثالهای زیر نحوهی استفاده از این دستور مشخص شده است.
$ 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
با استفاده از این دستور یک یا تعدادی کانتینر را میتوانید ریستارت کنید. این دستور تنها یک آپشن دارد به نام t- که با استفاده از آن میتوانید برای ریستارت زمان تعیین کنید.
در مثال زیر نحوهی استفاده از دستور نمایش داده شده است.
$ docker restart my_container $ docker restart -t 10 my_container
با استفاده از این دستور یک تا تعدادی از کانتینرها را میتوان kill کرد. تنها آپشن این دستور s- میباشد که با استفاده از آن میتوان سیگنال مد نظر خود را به کانتینر ارسال کرد.
برخی از استفادههای این دستور در ادامه قرار داده شده است.
$ 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 و منبع برای دستور docker kill
با استفاده از این دستور شما میتوانید اطلاعات زیادی در مورد هر کدام از آبجکتهای داکر داشته باشید. به عنوان مثال میتوانید اطلاعات در مورد کانتینر و ایمیج و والیوم و یا نتورکهای که ایجاد شده است داشته باشید.
آپشنهای مربوط به این دستور رو در تصویر بالا مشاهده میکنید. همانند دستورات قبل با استفاده از آپشن 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
در این لینک و این لینک توضیحات خوبی برای انواع فرمتهای خروجی ارائه شده است. شما میتوانید مشخص کنید که این خروجی به چه صورت به شما نمایش داده شود. توضیح بیشتر این موضوع به نظرم از حوصلهی این متن خارج است شاید بعدا بر حسب نیاز بیشتر در موردش صحبت کنیم.