خانه » آموزش دستورات داکر | شروع کار با Docker در لینوکس
DevOPS آموزش

آموزش دستورات داکر | شروع کار با Docker در لینوکس

آموزش دستورات داکر | شروع کار با 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 جدید در سیستم میزبان 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

خروجی نمونه:

نمایش کانتینرهای docker در حال اجرا

اوه! کانتینر در حال اجرا وجود ندارد.

اجازه دهید دوباره همه کانتینرها (در حال اجرا و متوقف شده) را با دستور بررسی کنیم:

$ sudo docker ps -a

خروجی نمونه:

نمایش کانتینرهای docker در حال اجرا و متوقف شده

همانطور که می بینید، هنوز برخی از کانتینرهای متوقف شده وجود دارد که از یکی از تصاویر Docker استفاده می کنند. بنابراین، اجازه دهید همه کانتینرها را حذف کنیم.

مثال:

$ sudo docker rm 12e892156219

به طور مشابه، همانطور که در بالا نشان داده شده است، با استفاده از شناسه کانتینر مربوطه آنها را حذف کنید.

هنگامی که همه کانتینرها را حذف کردید، در نهایت تصاویر Docker را حذف کنید.

مثال:

$ sudo docker rmi b72889fa879c

اکنون با دستور بررسی کنید که آیا تصاویر Docker دیگری در هاست وجود دارد:

$ sudo docker images

اکنون احتمالاً هیچ تصویر داکری نخواهید داشت.

نتیجه

در این آموزش جامع شروع با Docker ، ما اصول اولیه Docker مانند ایجاد، اجرا، جستجو، حذف کانتینرها و همچنین ساختن تصویر Docker خود از یک Container را توضیح دادیم. همچنین توضیح دادیم که چگونه کانتینرها و تصاویر Docker را زمانی که دیگر ضروری نیستند حذف کنید.

امیدوارم که ایده اولیه در مورد استفاده از Docker را متوجه شده باشید .

برای جزئیات بیشتر، به پیوندهای منابع رسمی ارائه شده در انتهای این راهنما مراجعه کنید یا در بخش نظرات زیر نظر خود را بگذارید

منابع

وب سایت داکر

مستندات داکر

مهدی منصوری

من مهدی منصوری و کارشناس حوزه نرم افزار و امنیت اطلاعات هستم. کارشناسی ارشد خودم را در رشته امنیت اطلاعات از دانشگاه مالک اشتر تهران گرفتم. هم اکنون در زمینه DevOPS مشغول هستم. و در زمان های ممکن در این سایت و چند سایت دیگه مطلب می گذارم

درباره نویسنده

مهدی منصوری

من مهدی منصوری و کارشناس حوزه نرم افزار و امنیت اطلاعات هستم. کارشناسی ارشد خودم را در رشته امنیت اطلاعات از دانشگاه مالک اشتر تهران گرفتم.
هم اکنون در زمینه DevOPS مشغول هستم. و در زمان های ممکن در این سایت و چند سایت دیگه مطلب می گذارم

افزودن نظر

برای ارسال نظرات خود اینجا را کلیک کنید