docker-commands-1

دستور docker rename:

با استفاده از این دستور شما می‌توانید کانتینر خودتون رو rename کنید و اسم جدید برای اون قرار بدید. این دستور آپشن اضافی ندارد. نکته اینکه تفاوتی بین اینکه کانتینر در حال کار باشد یا نه وجود ندارد و در هر حالتی که باشد شما می‌توانید نام آن را تغییر دهید.

docker rename --help

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

$ docker ps
CONTAINER ID        IMAGE      COMMAND        CREATED      STATUS      PORTS           NAMES
4ce8adaf33b3        busybox     "sh"             2 hours ago              Up About a minute     test1
$ docker rename test1 salam
$ docker ps 
CONTAINER ID        IMAGE      COMMAND        CREATED      STATUS      PORTS           NAMES 4ce8adaf33b3        busybox     "sh"                 2 hours ago                 Up 3 minutes          salam 

دستور docker rm:

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

 docker rm --help

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

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

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

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

docker rm $(docker ps -a -q)

در این دستور لیستی از تمامی کانتینرهای داخل سرور تهیه می‌شود که با استفاده از دستور q- فقط id آنها فهرست شده است سپس با استفاده از دستور rm تمامی آنها پاک می‌شود.

منبع

دستور docker rmi:

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

docker rmi --help

بدون آپشن: تنها ایمیج‌هایی که وابستگی هیچ کانتینری به آنها نباشد را پاک می‌کند. یعنی اگر شما از روی ایمیج خود کانتینری راه‌اندازی کرده باشید آن را پاک نخواهد کرد. در مثال زیر از روی ایمیج busybox:latest کانتینر 4ce8adaf33b3 راه‌اندازی شده و در حال کار می باشد البته در صورتی که کانتینر وجود داشته باشد و stop شده باشد نیز باز ایمیج را پاک نمی‌کند.

$ docker rmi busybox:latest 
Error response from daemon: conflict: unable to remove repository reference "busybox:latest" (must force) - container 4ce8adaf33b3 is using its referenced image 8c811b4aec35

آپشن f-: با این آپشن ایمیج را پاک می‌کند و اگر از روی اون ایمیج کانتینری هم باشد آن ایمیج را آنتگ می‌کنند اما کماکان آی‌دی اون ایمیج باقی خواهد ماند. در هیچ صورتی اگر کانتینری در حال ران داشته باشید نمی‌توانید ایمیجی که از روی اون کانتینر را ایجاد کردید را پاک کنید.

آپشن no-prune: ایمیج‌های که از روی آنها این ایمیج ایجاد شده است (والدین این ایمیج هستند) را پاک نمی‌کند.

دستور docker tag:

با استفاده از این دستور تگ (tag=برچسب) مربوط به ایمیج را تغییر نام می‌دهید و می‌توانید برای ایمیج خود نام و تگ جدید قرار بدید. این دستور آپشن اضافی ندارد و به صورت زیر می‌توانید تگ هر ایمیج را تغییر دهید و از آن یک ایمیج جدید با تگ جدید داشته باشید. این آپشن‌ها بسیار کاربردی بوده و استفاده می‌شود.

docker tag -h

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

# docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
$ docker tag busybox:latest test:2

همواره برای اینکه ایمیج را در ریجیستری push کنند ابتدای امر آن را تغییر نام داده و به نام ریجیستری و ریپوی مد نظر تغییر داده سپس آن را push می‌کنند.به مثال زیر توجه کنید.

$ docker tag busybox:latest docker.dockerme.ir/test/test:2

همان‌طور که ملاحضه می‌کنید ایمیج جدید با نام test و تگ ۲ و ریپوی test در ریجیستری docker.dockerme.ir آماده شده است و الان آماده‌ی push کردن می‌باشد. البته قبلش باید به ریجیستری مورد نظر login کرده باشید و دسترسی آن مهیا شده باشد که در دستور login کامل توضیح داده می‌شود.

منبع

دستور docker search:

با این دستور در docker hub که ریجیستری اصلی داکر می‌باشد می‌توانید جستجو کنید و ایمیج مد نظر خودتون رو پیدا کنید.

خطای 403 هنگام استفاده از دستور docker search:

همان‌طور که قبلا هم گفته شد داکر هاب بر روی ایران و چند تا کشور دیگه مسدود می‌باشد برای دانلود از آن روش‌های مختلفی پیشنهاد شد که در این لینک به صورت کامل توضیح داده شده است. اگر شما از روش mirror registry استفاده می‌کنید می‌توانید ایمیج دانلود کنید اما دستور search برای شما کماکان خطای 403 را خواهد داد. برای اینکه این مشکل نیز برطرف شود می‌توانید از proxy یا از روش سایت شکن استفاده کنید که تمام این موارد در همان لینک توضیح داده شده است.

docker search -h

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

  • نام ایمیج: اسم هر ایمیج می‌باشد.
  • توضیحات: توضیح خیلی مختصری از هر ایمیج قرار دارد.
  • تعداد ستاره‌های هر ایمیج می‌باشد.
  • رسمی بودن ایمیج را مشخص می‌کند.
  • اتوماتیک بودن ایمیج را مشخص می‌کند.

آپشن filter: برای جستجویی که انجام می‌دهید می‌توانید فیلتر قرار دهید و بر اساس فیلتر شما خروجی دستور نمایش داده شود.

مواردی که می‌توان در فیلتر لحاظ کرد همانند تصویر زیر می‌باشد.

docker search --filter

در ادامه نحوه استفاده از این آپشن در مثالی مشخص شده است. در این درخواست مشخص دنبال نسخه‌ای از ایمیج busybox هستیم که رسمی (official) باشد و تعداد ستاره‌های آن ۲۰ به بالا باشد. در جواب ایمیجی را به ما نشان می‌دهد که ۱۲۶۸ تا ستاره دارد و به صورت رسمی می‌باشد. حالا به دستور دوم توجه کنید که قسمت automated را نیز وارد فیلتر کردیم که نتیجه آن هیچ ایمیجی نیست که هم به صورت رسمی باشد و هم حداقل ۲۰ تا ستاره داشته باشد و هم اتوماتیک باشد.

$ docker search --filter "is-official=true" --filter "stars=20" busybox
 NAME                DESCRIPTION           STARS               OFFICIAL            AUTOMATED
 busybox             Busybox base image.   1268                [OK]            
docker search --filter "is-official=true" --filter "stars=20" --filter "is-automated=true"busybox
 NAME                DESCRIPTION           STARS               OFFICIAL            AUTOMATED

آپشن format: بر اساس این آپشن شما می‌توانید خروجی search را همانند چیزی که خودتان می‌پسندید تنظیم کنید. مواردی که می‌توانید در فیلتر لحاظ کنید به قرار زیر است.

docker search --format

دقیقا تمام ۵ موردی که در هر ایمیج قرار دارد را می‌توانید بر اساس چیزی که خودتان در نظر دارید تنظیم کنید. به مثال زیر توجه کنید. در این مثال تنها در خروجی نام ایمیج به همراه : و بعد از آن تعداد ستاره‌های هر ایمیج و بعد از آن عبارت DockerMe.ir +++ قرار داده شده است. یعنی هر طوری که مد نظر ما باشد می‌توانیم این خروجی را تنظیم کنیم.

$ docker search --format "{{.Name}}: {{.StarCount}} +++ DockerMe.ir" nginx
nginx: 8564 +++ DockerMe.ir
jwilder/nginx-proxy: 1340 +++ DockerMe.ir
richarvey/nginx-php-fpm: 547 +++ DockerMe.ir
jrcs/letsencrypt-nginx-proxy-companion: 374 +++ DockerMe.ir
kong: 190 +++ DockerMe.ir
webdevops/php-nginx: 103 +++ DockerMe.ir
kitematic/hello-world-nginx: 99 +++ DockerMe.ir
bitnami/nginx: 52 +++ DockerMe.ir
zabbix/zabbix-web-nginx-mysql: 52 +++ DockerMe.ir
linuxserver/nginx: 35 +++ DockerMe.ir
1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5: 35 +++ DockerMe.ir
tobi312/rpi-nginx: 19 +++ DockerMe.ir

آپشن limit: تعداد خروجی‌های جستجو را می‌توانید مشخص کنید. به صورت پیش‌فرض ۲۵ عدد می‌باشد. شما می‌توانید فقط تعدادی که مد نظر خودتون هست رو مشخص کنید تا نمایش دهد. در مثال زیر ۳ تا مورد از جستجو رو بنده در نظر گرفتم.

$ docker search --limit 3 --format "{{.Name}}: {{.StarCount}} +++ DockerMe.ir" nginx
nginx: 8564 +++ DockerMe.ir
jwilder/nginx-proxy: 1340 +++ DockerMe.ir
jrcs/letsencrypt-nginx-proxy-companion: 374 +++ DockerMe.ir

آپشن no-trunc: خروجی نمایش داده شده را مختصر نمی‌کند.

منبع