آموزش دستورات داکر | شروع کار با Docker در لینوکس
این آموزش دستورات ضروری Docker مانند نحوه ایجاد یک کانتینر جدید، اجرای کانتینر، حذف یک کانتینر و غیره را پوشش میدهد. علاوه بر این، این راهنما توضیح می دهد که چگونه می توانید تصویر Docker سفارشی خود را از یک کانتینر موجود بسازید و چگونه کانتینرها و تصاویر را حذف کنید. بدون مقدمه، اجازه دهید با استفاده از اصول Docker شروع کنیم!
مراحل نصب داکر
Docker را می توان در اکثر سیستم عامل های مدرن لینوکس نصب کرد. اگر هنوز Docker را نصب نکرده اید، به راهنماهای زیر مراجعه کنید:
Docker Image و Docker Container چیست؟
قبل از شروع کار با Docker، اجازه دهید توضیح دهم که یک تصویر Docker و یک Docker Container چیست .
یک Docker Image فایلی است که تصمیم میگیرد یک Container چگونه باید رفتار کند، و Docker Container مرحله اجرا یا متوقف شده یک تصویر Docker است.
کانتینرها از بقیه فایل های میزبان جدا می شوند.
هنگامی که یک کانتینر داکر را اجرا می کنیم، از یک سیستم فایل ایزوله استفاده می کند که توسط یک تصویر داکر ارائه می شود. تصویر Docker شامل همه چیزهایی است که برای اجرای یک برنامه نیاز است – همه وابستگی ها، پیکربندی، اسکریپت ها، باینری ها و غیره.
تصویر همچنین شامل پیکربندیهای دیگری برای کانتینر است، مانند متغیرهای محیطی، یک دستور پیشفرض برای اجرا و سایر فرادادهها.
شروع کار با Docker در لینوکس
تمام مراحل ارائه شده در زیر در نسخه سرور اوبونتو 22.04، 20.04 و 18.04 LTS آزمایش شده است. با این حال، مراحل ارائه شده در بخش های بعدی برای همه پلتفرم های لینوکس مشترک است. به عنوان مثال، می توانید همان دستورات را در یک سیستم مبتنی بر RHEL (مثلا AlmaLinux) نیز اجرا کنید.
۱. تصاویر داکر را جستجو کنید
ما میتوانیم تصاویر را از کتابخانه رسمی docker به نام Docker hub دریافت کنیم یا تصاویر خود را ایجاد کنیم.
برای کسانی که نمیدانند، داکر هاب یک مخزن مرکزی آنلاین است که همه کاربران داکر تصاویر داکر خود را میسازند، آزمایش میکنند و ذخیره میکنند. داکر هاب دارای ده ها هزار تصویر داکر است و تعداد تصاویر هر روز در حال افزایش است.
شما می توانید هر تصویر Docker را با "docker search"
دستور از خط فرمان جستجو کنید.
به عنوان مثال، برای جستجوی تصاویر docker بر اساس Alpine Linux، اجرا کنید:
$ sudo docker search alpine
خروجی نمونه:
برای جستجوی تصاویر بر اساس اوبونتو ، اجرا کنید:
$ sudo docker search ubuntu
حتی می توانید تصاویر را برای هر برنامه ای مانند Nginx جستجو کنید :
$ sudo docker search nginx
داکر هاب دارای طیف گسترده ای از تصاویر است. چه یک سیستم عامل، برنامه، یا ترکیبی از چندین برنامه (مثلاً پشته LAMP)، تصاویر Docker از پیش ساخته شده را برای همه چیز در داکر هاب پیدا خواهید کرد.
اگر چیزی که به دنبال آن هستید در دسترس نیست، می توانید آن را بسازید و از طریق داکر هاب برای عموم در دسترس قرار دهید یا برای استفاده شخصی خود نگه دارید.
۲. تصاویر داکر را دانلود کنید
برای دانلود تصویر داکر برای سیستم عامل اوبونتو، دستور زیر را از ترمینال اجرا کنید:
$ sudo docker pull ubuntu
دستور بالا آخرین تصویر اوبونتو را از داکر هاب دانلود می کند .
خروجی نمونه:
Using default tag: latest
latest: Pulling from library/ubuntu
405f018f9d1d: Pull complete
Digest: sha256:b6b83d3c331794420340093eb706a6f152d9c1fa51b262d9bf34594887c2c7ac
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
همچنین می توانید نسخه خاصی از تصویر اوبونتو را با استفاده از دستور دانلود کنید:
$ sudo docker pull ubuntu:20.04
Docker به ما امکان می دهد هر تصویری را دانلود کنیم و کانتینر را بر اساس آن تصویر بدون در نظر گرفتن سیستم عامل میزبان راه اندازی کنیم.
به عنوان مثال، برای دانلود تصویر Alpine OS، اجرا کنید:
$ sudo docker pull alpine
۳. فهرست تصاویر داکر
تمام تصاویر دانلود شده داکر در دایرکتوری ذخیره خواهند شد /var/lib/docker/
.
برای مشاهده لیست تصاویر داکر دانلود شده، اجرا کنید:
$ sudo docker images
خروجی نمونه:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 27941809078c 3 weeks ago 77.8MB
ubuntu 20.04 20fffa419e3a 3 weeks ago 72.8MB
alpine latest e66264b98777 5 weeks ago 5.52MB
همانطور که در بالا می بینید، من سه تصویر Docker را دانلود کرده ام – آخرین اوبونتو ، اوبونتو 20.04 و آلپاین لینوکس .
حال، اجازه دهید پیش برویم و ببینیم چگونه کانتینرها را بر اساس تصاویر دانلود شده راه اندازی یا اجرا کنیم.
۴. Docker Containers را اجرا کنید
ما میتوانیم یک کانتینر را به دو روش راهاندازی کنیم – یا با استفاده از تگ Docker Image یا شناسه تصویر .
TAG به یک Snap Shot از تصویر اشاره دارد و شناسه IMAGE شناسه منحصر به فرد مربوطه برای آن تصویر است.
به اسکرین شات زیر دقت کنید:
همانطور که در نتایج بالا مشاهده می کنید، برچسب ها “آخرین” و “20.04” هستند .
27941809078c
شناسه تصویر آخرین تصویر داکر اوبونتو است،20fffa419e3a
شناسه تصویر Ubuntu 20.04 Docker است- و
e66264b98777
شناسه تصویر آخرین تصویر Docker Alpine است.
۴.۱. کانتینرها را با استفاده از برچسب اجرا کنید
هنگامی که تصاویر Docker را به انتخاب خود دانلود کردید، دستور زیر را اجرا کنید تا یک کانتینر داکر راه اندازی شود و با استفاده از TAG آن به آن متصل شوید.
$ sudo docker run -t -i ubuntu:latest /bin/bash
یا
$ sudo docker run -it ubuntu:latest /bin/bash
اینجا،
-t
: یک شبه ترمینال جدید در داخل کانتینر اوبونتو اختصاص می دهد.-i
: به ما امکان می دهد با گرفتن استاندارد در (STDIN) کانتینر، یک اتصال تعاملی ایجاد کنیم.ubuntu:latest
: تصویر داکر اوبونتو با برچسب “latest”./bin/bash
: پوسته BASH برای کانتینر جدید تعیین می کند. این اختیاری است. اگر Shell را ذکر نکنید، Shell پیش فرض به کانتینر اختصاص داده می شود.
پس از راهاندازی کانتینر، به طور خودکار وارد Shell کانتینر میشوید (خط فرمان):
کانتینر جدید مبتنی بر آخرین تصویر اوبونتو اکنون راه اندازی شده است. یک شناسه منحصر به فرد و یک نام به همه کانتینرهای جدید داده می شود. همانطور که در خروجی بالا مشاهده می کنید، شناسه کانتینر اوبونتو 2f2a5b826762 است . در عرض یک دقیقه خواهیم دید که نام کانتینر را کجا پیدا کنیم.
اکنون می توانید کار را با کانتینر شروع کنید. پس از اتمام کار با Container، می توانید بدون پایان دادن به Container (سیستم عامل مهمان) به ترمینال سیستم میزبان (در مورد من، Ubuntu 22.04 LTS) برگردید.
۴.۲. از کانتینر در حال اجرا جدا شوید
برای جدا شدن از یک کانتینر در حال اجرا (بدون پایان دادن به آن)، CTRL+P
به دنبال آن CTRL+Q
را فشار دهید.
اکنون به پنجره ترمینال کامپیوتر میزبان اصلی خود بازگشته اید. لطفاً توجه داشته باشید که کانتینر هنوز در پسزمینه کار میکند و ما هنوز آن را خاتمه ندادهایم.
۴.۳. کانتینرها را با استفاده از شناسه IMAGE اجرا کنید
راه دیگر برای راه اندازی یک کانتینر و اتصال به آن استفاده از شناسه IMAGE مطابق شکل زیر است:
$ sudo docker run -it 20fffa419e3a /bin/bash
اینجا،
20fffa419e3a
– شناسه تصویر
برای جدا شدن از کانتینر و بازگشت به ترمینال سیستم میزبان، CTRL+P و CTRL+Q را فشار دهید . باز هم فقط از کانتینر جدا شدیم اما جلوی آن را نگرفتیم. کانتینر هنوز در پسزمینه در حال اجراست.
۴.۴. کانتینرها را در حالت جدا شده اجرا کنید
در قسمت های قبل یک کانتینر راه اندازی کردیم و بلافاصله به آن وصل کردیم. و بعد از اینکه کارمان با آن کانتینر تمام شد از کانتینر جدا شدیم.
همچنین می توانید کانتینر را در حالت جدا شده (بدون پیوستن به آن) راه اندازی کنید.
برای اجرای یک کانتینر در پس زمینه، اجرا کنید:
$ sudo docker run -it -d alpine:latest
خروجی نمونه:
d74f2ceb5f3ad2dbddb0b26e372adb14efff91e75e7763418dbd12d1d227129d
12 حرف اول در خروجی بالا نشان دهنده شناسه کانتینر است.
با استفاده از دستور می توانید بررسی کنید که کانتینر در حال اجرا است docker ps
:
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d74f2ceb5f3a alpine:latest "/bin/sh" 3 seconds ago Up 2 seconds zen_pascal
همانطور که در خروجی بالا می بینید، ما یک کانتینر Alpine ایجاد کرده ایم که به آن متصل نشدیم.
اگر می خواهید به آن متصل شوید، به سادگی اجرا کنید:
$ sudo docker attach d74f2ceb5f3a
۵. Containers در حال اجرا را مشاهده کنید
برای مشاهده لیست کانتینرهای در حال اجرا، دستور زیر را اجرا کنید:
$ sudo docker ps
خروجی نمونه:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7e04eed577e 20fffa419e3a "/bin/bash" 6 minutes ago Up 6 minutes brave_mclean
2f2a5b826762 ubuntu:latest "/bin/bash" 18 minutes ago Up 18 minutes hungry_leavitt
اینجا،
- f7e04eed577e شناسه کانتینر اوبونتو است که با تصویر “2f2a5b826762” ایجاد شده است. و “brave_mclean” نام این کانتینر است.
- 2f2a5b826762 شناسه کانتینر اوبونتو است که با تصویر “ubuntu:latest” ایجاد شده است. و “hungry_leavitt” نام این کانتینر است.
هر زمان که یک کانتینر جدید ایجاد می شود، یک شناسه و نام منحصر به فرد به آن داده می شود، بنابراین می توانیم با استفاده از شناسه یا نام آن به کانتینر دسترسی داشته باشیم
توجه: لطفاً توجه داشته باشید که شناسه کانتینر و شناسه تصویر داکر متفاوت هستند .
برای فهرست کردن همه کانتینرهای موجود (چه در حال اجرا یا متوقف شده)، اجرا کنید:
$ sudo docker ps -a
۶. به کانتینر در حال اجرا متصل یا جدا شوید
ابتدا نام یا شناسه کانتینر را با docker ps
دستور پیدا کنید.
$ sudo docker ps
سپس با استفاده از دستور docker attach
به کانتینر در حال اجرا متصل شوید.
$ sudo docker attach <container-id>
به عنوان مثال، من قصد دارم مانند زیر به کانتینری که دارای شناسه “f7e04eed577e” است متصل کنم:
$ sudo docker attach f7e04eed577e
همچنین می توانید با استفاده از نام آن به کانتینر متصل شوید.
$ sudo docker attach brave_mclean
اکنون وارد کانتینر شده اید.
برای جدا شدن از کانتینر، کافی است CTRL+P و سپس CTRL+Q را فشار دهید .
۸. شروع، راه اندازی مجدد، مکث و توقف کانتینرها
میتوانید یک کانتینر Docker را با استفاده از نام یا شناسه کانتینر آن، راهاندازی، راهاندازی مجدد، مکث یا متوقف کنید.
ابتدا نام یا شناسه کانتینر را با docker ps -a
دستور پیدا کنید.
اکنون می توانید یک کانتینر را با استفاده از دستور docker start
با نام یا شناسه مانند زیر راه اندازی کنید.
$ sudo docker start modest_cray
$ sudo docker start 10615254bb45
می توانید چندین کانتینر را با فاصله مانند زیر شروع کنید.
$ sudo docker start 24b5ee8c3d3a 56faac6d20ad d74f2ceb5f3a
برای راه اندازی مجدد یک کانتینر در حال اجرا، این کار را انجام دهید:
$ sudo docker start 10615254bb45
برای توقف موقت فرآیندها در یک کانتینر در حال اجرا:
$ sudo docker pause 10615254bb45
برای لغو توقف فرآیندها در یک کانتینر در حال اجرا:
$ sudo docker unpause 10615254bb45
برای مسدود کردن یک کانتینر تا زمانی که دیگران متوقف شوند:
$ sudo docker wait 10615254bb45
به طور مشابه، ما می توانیم یک داکر کانتینر را با استفاده از نام یا شناسه آن متوقف کنیم. اگر از قبل در داخل Shell کانتینر هستید، می توانید به سادگی با اجرای دستور زیر، کانتینر را متوقف کنید:
# exit
همچنین می توانید با استفاده از دستور زیر از سیستم میزبان Docker (خاموش کردن کانتینر) را متوقف کنید:
$ sudo docker stop 10615254bb45
همانطور که در زیر نشان داده شده است می توانید از چندین کانتینر با فاصله جدا شده خارج شوید.
$ sudo docker stop 35b5ee8c3d3a 10615254bb45
پس از خروج از کانتینر، با فهرست کردن کانتینرهای در حال اجرا با دستور، بررسی کنید که آیا واقعاً متوقف شده است:
$ sudo docker ps
۸. کانتینرهای داکر را بکشید
دستور توقف docker به آرامی یک کانتینر در حال اجرا را خاموش می کند. گاهی اوقات، ممکن است یک کانتینر که پاسخگو نباشد و گیر کند یا بخواهید به زور یک کانتینر را خاموش کنید.
برای از بین بردن یک کانتینر با ارسال یک SIGKILL
به یک کانتینر در حال اجرا، اجرا کنید:
$ sudo docker kill 10615254bb45
۹. پس از بستن کانتینر به صورت خودکار آنها را حذف کنید
ممکن است بخواهید یک Container را آزمایش کنید و بعد از اتمام کار با Container آن را حذف کنید. اگر چنین است، میتوانید پس از بستن کانتینر با استفاده از rm
به طور خودکار آن را حذف کنید:
$ sudo docker run -it --rm debian:latest
پس از خروج از Container، به طور خودکار حذف می شود.
همانطور که در خروجی بالا مشاهده می کنید، من یک کانتینر جدید دبیان ایجاد کردم. پس از خروج از کانتینر، به طور خودکار حذف می شود. خروجی docker ps -a
نشان می دهد که کانتینر دبیان وجود ندارد.
۱۰. اختصاص نام به کانتینرها
اگر به دقت به خروجی دستورات قبلی نگاه کنید، زمانی که یک کانتینر را راه اندازی می کنید به هر کانتینر یک نام تصادفی داده می شود. اگر Containers خود را نام گذاری نکنید، Docker آنها را به طور خودکار برای شما نامگذاری می کند.
به مثال زیر دقت کنید.
$ sudo docker run -it -d alpine:latest
2af79e97a825c91bf374b4862b9e7c22fc22acd1598005e8bea3439805ec335d
$ sudo docker run -it -d alpine:latest
80b53b7e661d33696b65c78267fc3f067b6100799c925910db4721963e3fae0a
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80b53b7e661d alpine:latest "/bin/sh" 3 seconds ago Up 2 seconds bold_margulis
2af79e97a825 alpine:latest "/bin/sh" 6 seconds ago Up 5 seconds recursing_taussig
همانطور که در خروجی بالا مشاهده می کنید، با وجود اینکه من دو کانتینر با استفاده از یک تصویر داکر ایجاد کرده ام، هر دو شناسه و نام متفاوتی دریافت می کنند.
اگر می خواهید یک نام ثابت به کانتینر اختصاص دهید، از --name
مانند زیر استفاده کنید:
$ sudo docker run -it -d --name ostechnix_alpine alpine:latest
دستور بالا یک کانتینر جدید به نام ostechnix_alpine را در حالت جدا شده ایجاد می کند.
اجازه دهید لیست کانتینرهای در حال اجرا را مشاهده کنیم:
$ sudo docker ps
خروجی نمونه:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
397111fac537 alpine:latest "/bin/sh" 2 seconds ago Up 2 seconds ostechnix_alpine
80b53b7e661d alpine:latest "/bin/sh" 7 minutes ago Up 7 minutes bold_margulis
2af79e97a825 alpine:latest "/bin/sh" 7 minutes ago Up 7 minutes recursing_taussig
آیا در خروجی بالا به نام اولین Container توجه کرده اید؟ بله، ما یک نام سفارشی (یعنی ostechnix_alpine
) به Container اختصاص داده ایم.
اختصاص نام های سفارشی به کانتینرها برای ما سودمند است. با نگاه کردن به نام کانتینر به راحتی میتوانیم مواردی را که در آن کانتینر نصب شده است شناسایی کنیم.
۱۱. تصاویر Docker سفارشی بسازید
Docker فقط برای دانلود و استفاده از کانتینرهای موجود نیست. شما می توانید تصویر داکر سفارشی خود را نیز ایجاد کنید.
اجازه دهید یک کانتینر اوبونتو راه اندازی کنیم:
$ sudo docker run -it ubuntu:latest
اکنون در پوسته کانتینر خواهید بود.
سپس، هر نرم افزاری را نصب کنید یا هر کاری که می خواهید در کانتینر انجام دهید.
به عنوان مثال، اجازه دهید وب سرور آپاچی را در کانتینر نصب کنیم .
# apt update
# apt install apache2
به همین ترتیب، هر نرم افزار مورد نظر خود را در Container نصب و تست کنید.
پس از اتمام کار، از کانتینر جدا شوید (از آن خارج نشوید) و به shell سیستم میزبان برگردید. لطفاً کانتینر را متوقف یا خاموش نکنید. برای جدا شدن از کانتینر بدون توقف آن، و CTRL+P
به دنبال آن CTRL+Q
را فشار دهید.
از ترمینال میزبان Docker خود، دستور زیر را برای یافتن شناسه کانتینر اجرا کنید:
$ sudo docker ps
در نهایت، یک تصویر Docker از کانتینر در حال اجرا با استفاده از دستور ایجاد کنید:
$ sudo docker commit 377e6d77ebb5 ostechnix/ubuntu_apache
خروجی نمونه:
sha256:bc5e5f95ca592a3585fda2c5a40ec30c98e292046ef70390a2c3b7863cc6f7c1
اینجا،
377e6d77ebb5
– شناسه کانتینر اوبونتو.ostechnix
– نام کاربری که کانتینر را ایجاد کرده است.ubuntu_apache
– نام تصویر داکر ایجاد شده توسط کاربر ostechnix.
اجازه دهید بررسی کنیم که آیا تصویر Docker جدید با دستور ایجاد شده است یا خیر:
$ sudo docker images
خروجی نمونه:
REPOSITORY TAG IMAGE ID CREATED SIZE
ostechnix/ubuntu_apache latest bc5e5f95ca59 55 seconds ago 229MB
debian latest d2780094a226 11 days ago 124MB
ubuntu latest 27941809078c 3 weeks ago 77.8MB
ubuntu 20.04 20fffa419e3a 3 weeks ago 72.8MB
alpine latest e66264b98777 5 weeks ago 5.52MB
همانطور که در خروجی بالا مشاهده می کنید، تصویر Docker جدید در سیستم میزبان Docker ما از Container در حال اجرا ایجاد شده است.
اکنون، می توانید طبق معمول با دستور، یک Container جدید از تصویر Docker ایجاد شده جدید ایجاد کنید:
$ sudo docker run -it ostechnix/ubuntu_apache
12. برداشتن کانتینر
هنگامی که تمام تحقیق و توسعه با کانتینرهای Docker را انجام دادید، اگر دیگر نمی خواهید آنها را حذف کنید.
برای انجام این کار، ابتدا باید کانتینرهای در حال اجرا را متوقف کنیم (خاموش کنیم).
اجازه دهید کانتینرهای در حال اجرا را با دستور پیدا کنیم:
$ sudo docker ps
خروجی نمونه:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
377e6d77ebb5 ubuntu:latest "bash" 7 minutes ago Up 7 minutes elegant_beaver
کانتینر در حال اجرا را با استفاده از شناسه آن متوقف کنید:
$ sudo docker stop 377e6d77ebb5
اکنون با استفاده از دستور کانتینر را حذف کنید:
$ sudo docker rm 377e6d77ebb5
به طور مشابه، تمام کانتینر را متوقف کنید و اگر دیگر نیازی به آنها نیست، آنها را حذف کنید.
حذف چندین کانتینر یک به یک می تواند کار خسته کننده ای باشد. بنابراین، ما میتوانیم همه کانتینرهای متوقف شده را یکباره حذف کنیم، فقط کافیست اجرا کنید:
$ sudo docker container prune
تایپ کنید "Y"
و ENTER
کلید را بزنید تا کانتینرها حذف شوند.
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
397111fac5374921b974721ee646b2d5fbae61ca9c6e8b90fbf47952f382a46b
80b53b7e661d33696b65c78267fc3f067b6100799c925910db4721963e3fae0a
[...]
Total reclaimed space: 176B
این دستور فقط با آخرین نسخه های Docker کار می کند.
بررسی کنید که آیا تمام کانتینرها با استفاده از دستور حذف شده اند:
$ sudo docker ps -a
اگر هیچ خروجی نمی بینید، همه کانتینرها حذف می شوند.
۱۴. حذف تصاویر Docker
به یاد داشته باشید، ابتدا باید قبل از حذف تمام تصاویری که آن کانتینرها از آنها ساخته شده اند، همه کانتینرها را حذف کنید.
پس از حذف کانتینرها، میتوانید تصاویر Docker را که دیگر به آنها نیاز ندارید حذف کنید.
برای یافتن لیست تصاویر داکر دانلود شده:
$ sudo docker images
خروجی نمونه:
REPOSITORY TAG IMAGE ID CREATED SIZE
ostechnix/ubuntu_apache latest bc5e5f95ca59 14 minutes ago 229MB
debian latest d2780094a226 11 days ago 124MB
ubuntu latest 27941809078c 3 weeks ago 77.8MB$ sudo docker rmi ce5aa74a48f1
ubuntu 20.04 20fffa419e3a 3 weeks ago 72.8MB
alpine latest e66264b98777 5 weeks ago 5.52MB
همانطور که در بالا مشاهده می کنید، ما ۵ تصویر Docker در سیستم میزبان خود داریم.
اجازه دهید با استفاده از شناسه IMAGE آنها را حذف کنیم:
$ sudo docker rmi ce5aa74a48f1
خروجی نمونه:
Untagged: ostechnix/ubuntu_apache:latest
Deleted: sha256:bc5e5f95ca592a3585fda2c5a40ec30c98e292046ef70390a2c3b7863cc6f7c1
Deleted: sha256:a8e4797160a2b2d33d8bd1bd67e008260c022b3a53fbcc198b2b74d9eae5961d
به طور مشابه، سایر تصاویر Docker را حذف کنید.
برای حذف تمام کانتینرهای متوقف شده، همه تصاویر، build cacheها، همه شبکه ها، اجرا کنید:
$ sudo docker system prune -a
هنگام استفاده از این دستور مراقب باشید. همه کانتینرها، شبکه ها، تصاویر استفاده نشده را حذف می کند.
بهطور پیشفرض، volume حذف نمیشوند تا از حذف دادههای مهم جلوگیری شود، حتی اگر در حال حاضر کانتینری از volume مورد نظر استفاده نکند.
اگر میخواهید همه چیز از جمله volumeها را حذف کنید، از --volumes
استفاده کنید.
$ sudo docker system prune -a --volumes
عیب یابی Docker
اگر کانتینرهای در حال اجرا یا متوقف شده از آنها استفاده می کنند، داکر به شما اجازه نمی دهد تصاویر داکر را حذف کنید.
به عنوان مثال، هنگامی که من سعی می کنم یک تصویر Docker را با شناسه b72889fa879c
از یکی از سرورهای قدیمی اوبونتو حذف کنم. من با خطای زیر مواجه شدم:
Error response from daemon: conflict: unable to delete b72889fa879c (must be forced) - image is being used by stopped container dde4dd285377
این به این دلیل است که تصویر Docker که میخواهید حذف کنید در حال حاضر توسط Container دیگری استفاده میشود.
بنابراین، اجازه دهید Container در حال اجرا را با استفاده از دستور بررسی کنیم:
$ sudo docker ps
خروجی نمونه:
اوه! کانتینر در حال اجرا وجود ندارد.
اجازه دهید دوباره همه کانتینرها (در حال اجرا و متوقف شده) را با دستور بررسی کنیم:
$ sudo docker ps -a
خروجی نمونه:
همانطور که می بینید، هنوز برخی از کانتینرهای متوقف شده وجود دارد که از یکی از تصاویر Docker استفاده می کنند. بنابراین، اجازه دهید همه کانتینرها را حذف کنیم.
مثال:
$ sudo docker rm 12e892156219
به طور مشابه، همانطور که در بالا نشان داده شده است، با استفاده از شناسه کانتینر مربوطه آنها را حذف کنید.
هنگامی که همه کانتینرها را حذف کردید، در نهایت تصاویر Docker را حذف کنید.
مثال:
$ sudo docker rmi b72889fa879c
اکنون با دستور بررسی کنید که آیا تصاویر Docker دیگری در هاست وجود دارد:
$ sudo docker images
اکنون احتمالاً هیچ تصویر داکری نخواهید داشت.
نتیجه
در این آموزش جامع شروع با Docker ، ما اصول اولیه Docker مانند ایجاد، اجرا، جستجو، حذف کانتینرها و همچنین ساختن تصویر Docker خود از یک Container را توضیح دادیم. همچنین توضیح دادیم که چگونه کانتینرها و تصاویر Docker را زمانی که دیگر ضروری نیستند حذف کنید.
امیدوارم که ایده اولیه در مورد استفاده از Docker را متوجه شده باشید .
برای جزئیات بیشتر، به پیوندهای منابع رسمی ارائه شده در انتهای این راهنما مراجعه کنید یا در بخش نظرات زیر نظر خود را بگذارید
افزودن نظر