مشاور زیرساخت. موسس سایت آموزشی DockerMe.ir
توضیح دستورات داکر – این قسمت rename, rm, rmi, tag, search
دستور docker rename:
با استفاده از این دستور شما میتوانید کانتینر خودتون رو rename کنید و اسم جدید برای اون قرار بدید. این دستور آپشن اضافی ندارد. نکته اینکه تفاوتی بین اینکه کانتینر در حال کار باشد یا نه وجود ندارد و در هر حالتی که باشد شما میتوانید نام آن را تغییر دهید.
برای تغییر نام کانتینر به مثال زیر توجه کنید همانند مثال زیر میتوانید نام کانتینر را تغییر دهید.
$ 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:
با استفاده از این دستور شما میتوانید کانتینرهای خود را پاک کنید. همواره میتونید یک یا تعدادی کانتینر را پاک کنید. این دستور ۳ عدد آپشن دارد که در ادامه آنها را بررسی میکنیم.
آپشن f-: این آپشن به اجبار و با اولیوت بالا کانتینر در حال کار را نیز پاک میکند. به صورت پیش فرض و بدون استفاده از این آپشن شما نمیتوانید کانتینر در حال کار را پاک کنید اما اگر از این آپشن استفاده کنید این امکان برای شما مهیا میشود.
آپشن l-: این آپشن لینکهایی که بین کانتینرها در نتورک ایجاد شده است را نیز پاک میکند.
آپشن v-: هم خود کانتینر و هم والیومی که به آن متصل شده است را پاک میکند.
همانطور که قبلا نیز گفته شده بود میتوانید دستورات داکر را به صورت ترکیبی نیز استفاده کنید. یکی از دستوراتی که ممکن است زیاد استفاده شود این است که کل کانتینرهای داخل یک سرور را پاک کنید که برای این کار از دستور زیر استفاده میکنید.
docker rm $(docker ps -a -q)
در این دستور لیستی از تمامی کانتینرهای داخل سرور تهیه میشود که با استفاده از دستور q- فقط id آنها فهرست شده است سپس با استفاده از دستور rm تمامی آنها پاک میشود.
دستور docker rmi:
با استفاده از این دستور میتوانید یک یا تعدادی از ایمیجها را پاک کنید. دو تا آپشن برای این دستور وجود دارد که در ادامه توضیح داده میشود.
بدون آپشن: تنها ایمیجهایی که وابستگی هیچ کانتینری به آنها نباشد را پاک میکند. یعنی اگر شما از روی ایمیج خود کانتینری راهاندازی کرده باشید آن را پاک نخواهد کرد. در مثال زیر از روی ایمیج 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=برچسب) مربوط به ایمیج را تغییر نام میدهید و میتوانید برای ایمیج خود نام و تگ جدید قرار بدید. این دستور آپشن اضافی ندارد و به صورت زیر میتوانید تگ هر ایمیج را تغییر دهید و از آن یک ایمیج جدید با تگ جدید داشته باشید. این آپشنها بسیار کاربردی بوده و استفاده میشود.
برای استفاده همانند مثال زیر در ابتدا ایمیج اصلی که میخواهید تگ یا نام آن را تغییر دهید و بعد ایمیج جدید با تگ و نام جدید را قرار میدهید. البته همانطور که در مثال هم مشخص است با این دستور میتوانید ایمیج خود را به صورت کامل تغییر نام دهید و 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 یا از روش سایت شکن استفاده کنید که تمام این موارد در همان لینک توضیح داده شده است.
بدون آپشن: در داکر هاب جستجو کرده و هر موردی را که پیدا کند به شما نمایش میدهد. در این نمایش چند آیتم مشخص است که میتوان بر اساس همان موارد فیلتر نوشت و جستجوی بهتری داشت.
- نام ایمیج: اسم هر ایمیج میباشد.
- توضیحات: توضیح خیلی مختصری از هر ایمیج قرار دارد.
- تعداد ستارههای هر ایمیج میباشد.
- رسمی بودن ایمیج را مشخص میکند.
- اتوماتیک بودن ایمیج را مشخص میکند.
آپشن 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 را همانند چیزی که خودتان میپسندید تنظیم کنید. مواردی که میتوانید در فیلتر لحاظ کنید به قرار زیر است.
دقیقا تمام ۵ موردی که در هر ایمیج قرار دارد را میتوانید بر اساس چیزی که خودتان در نظر دارید تنظیم کنید. به مثال زیر توجه کنید. در این مثال تنها در خروجی نام ایمیج به همراه : و بعد از آن تعداد ستارههای هر ایمیج و بعد از آن عبارت 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: خروجی نمایش داده شده را مختصر نمیکند.
مطلبی دیگر از این انتشارات
توضیح دستورات داکر – این قسمت docker info
مطلبی دیگر از این انتشارات
راکت چت جایگزین خوبی برای اسلک
مطلبی دیگر از این انتشارات
توضیح دستورات داکر – این قسمت docker push, start, stop, version, pause, top