خانه » نحوه نصب Docker Engine و Docker Compose در اوبونتو 22.04 LTS
DevOPS

نحوه نصب Docker Engine و Docker Compose در اوبونتو 22.04 LTS

راهنمای گام به گام نصب Docker Engine با Docker Compose در اوبونتو

در این راهنما، نحوه نصب Docker Engine در لینوکس اوبونتو را خواهیم دید . علاوه بر این، نحوه نصب Docker compose را نیز خواهیم دید ، ابزاری برای تعریف و اجرای برنامه‌های Docker چند کانتینری.

این راهنما به طور رسمی در اوبونتو 22.04 LTS آزمایش شده است. با این حال، باید روی نسخه های قدیمی تر مانند 20.04 LTS و 18.04 LTS کار کند. برای امنیت و ثبات بهتر، توصیه می کنم از جدیدترین نسخه Ubuntu 22.04 LTS استفاده کنید.

داکر چیست؟

Docker یک فناوری مجازی سازی سریع، سبک و در سطح سیستم عامل برای توسعه دهندگان و مدیران سیستم است که می خواهند برنامه ای با تمام وابستگی های مورد نیاز بسازند و آن را به عنوان یک بسته تولید کنند.

برخلاف سایر روش های مجازی سازی مانند VMWare، Xen و VirtualBox، نیازی به سیستم عامل مهمان مجزا برای هر ماشین مجازی نیست.

همه کانتینرهای Docker به طور موثر هسته سیستم عامل میزبان را به اشتراک می گذارند. هر کانتینر در یک فضای کاربری مجزا در همان سیستم عامل اجرا می شود.

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

لازم نیست نگران سیستم عامل، نرم افزار، تنظیمات سفارشی شده یا هر چیز دیگری باشید. تا زمانی که Docker را در سیستم میزبان خود نصب کرده باشیم، می توانیم توسعه را ادامه دهیم. به عبارت ساده، Docker در همه جا کار خواهد کرد!

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

به زبان ساده، یک تصویر داکر فایلی است که نحوه رفتار یک Container را توضیح می دهد، در حالی که کانتینر Docker وضعیت در حال اجرا (یا متوقف شده) تصویر Docker است.

امیدوارم ایده اولیه ای در مورد Docker را متوجه شده باشید. برای جزئیات بیشتر به راهنمای کاربر رسمی Docker مراجعه کنید. پیوند در انتهای این راهنما پیوست شده است.

الزامات داکر

برای نصب و پیکربندی Docker، سیستم شما باید حداقل شرایط زیر را داشته باشد.

۱- سیستم عامل لینوکس یا ویندوز ۶۴ بیتی .

۲- اگر از لینوکس استفاده می کنید، نسخه کرنل باید ۳.۱۰ یا بالاتر باشد.

۳- یک حساب کاربری با امتیازات sudo

۴- پشتیبانی از VT (فناوری مجازی سازی) در بایوس سیستم شما فعال شده است. 

۵- سیستم شما باید به اینترنت متصل باشد.

در لینوکس، برای تأیید جزئیات هسته و معماری، دستور زیر را از ترمینال اجرا کنید:

$ uname -a

خروجی نمونه:

Linux Ubuntu22CT 5.15.35-3-pve #1 SMP PVE 5.15.35-6 (Fri, 17 Jun 2022 13:42:35 +0200) x86_64 x86_64 x86_64 GNU/Linux

همانطور که در خروجی بالا مشاهده می کنید، نسخه هسته سیستم اوبونتو من  5.15.35-3-pve و معماری سیستم اوبونتو من ۶۴ بیتی است ( x86_64 x86_64 x86_64 GNU/Linux ). حروف درشت را در نتیجه بالا بررسی کنید.

نکته: در اینجا، من از ظرف Ubuntu 22.04 در Proxmox استفاده می کنم . به همین دلیل است که کلمه “pve” را در نسخه هسته در خروجی بالا مشاهده می کنید. اگر از ماشین فیزیکی (یا مجازی) اوبونتو استفاده می کنید، نسخه 5.15.35-3-generic را به عنوان نسخه هسته خواهید دید.

خب نسخه کرنل بالاتر از حداقل نیاز و 64 بیتی است. بنابراین، ما می توانیم Docker را بدون هیچ مشکلی نصب و استفاده کنیم.

لطفاً توجه داشته باشید که مهم نیست از کدام سیستم عامل اوبونتو استفاده می کنید. همچنین، مهم نیست که از اوبونتو دسکتاپ یا نسخه سرور اوبونتو یا هر گونه دیگر اوبونتو مانند Lubuntu، Kubuntu، Xubuntu استفاده می کنید.

تا زمانی که سیستم شما دارای نسخه هسته ۳.۱۰ به بالا باشد، و سیستم شما ۶۴ بیت باشد، داکر به خوبی کار خواهد کرد.

Docker را در اوبونتو 22.04 LTS نصب کنید

اول از همه، سیستم اوبونتو خود را به روز کنید.

۱. اوبونتو را به روز کنید

ترمینال خود را باز کنید و دستورات زیر را یکی یکی اجرا کنید:

$ sudo apt update
$ sudo apt upgrade
$ sudo apt full-upgrade

۲. مخزن Docker را اضافه کنید

اول از همه، گواهی های لازم را نصب کنید و به مدیر بسته apt اجازه دهید با استفاده از دستور زیر، از یک مخزن از طریق HTTPS استفاده کند:

$ sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

سپس، کلید رسمی GPG Docker را با اجرای دستورات زیر اضافه کنید:

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

مخزن رسمی Docker را اضافه کنید:

$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $( lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

لیست منابع اوبونتو را با استفاده از دستور به روز کنید:

$ sudo apt update

۳. Docker را نصب کنید

در نهایت، دستور زیر را برای نصب آخرین Docker CE در سرور Ubuntu 22.04 LTS اجرا کنید:

$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Docker را در اوبونتو نصب کنید

البته می توانید نسخه خاصی از Docker را نیز نصب کنید. برای بررسی لیست نسخه های Docker موجود، اجرا کنید:

$ apt-cache madison docker-ce

خروجی نمونه:

 docker-ce | 5:20.10.17~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:20.10.16~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:20.10.15~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:20.10.14~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
 docker-ce | 5:20.10.13~3-0~ubuntu-jammy | https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages

می توانید هر نسخه موجود را از لیست بالا انتخاب کرده و آن را نصب کنید. به عنوان مثال، برای نصب نسخه 5:20.10.16~3-0~ubuntu-jammy ، اجرا کنید:

$ sudo apt install docker-ce=5:20.10.16~3-0~ubuntu-jammy docker-ce-cli=5:20.10.16~3-0~ubuntu-jammy containerd.io

پس از نصب، بررسی کنید که آیا سرویس Docker با دستور اجرا می شود:

$ systemctl status docker

خروجی چیزی شبیه زیر را خواهید دید.

* docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-06-27 13:07:43 UTC; 3min 4s ago
TriggeredBy: * docker.socket
       Docs: https://docs.docker.com
   Main PID: 2208 (dockerd)
      Tasks: 8
     Memory: 29.6M
        CPU: 126ms
     CGroup: /system.slice/docker.service
             `-2208 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.071453522Z" level=info msg="ccResolverWrapper: sending update to cc: {[{unix:>
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.071459974Z" level=info msg="ClientConn switching balancer to \"pick_first\"" >
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.130989294Z" level=info msg="Loading containers: start."
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.187439756Z" level=info msg="Default bridge (docker0) is assigned with an IP a>
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.235966874Z" level=info msg="Loading containers: done."
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.240149866Z" level=warning msg="Not using native diff for overlay2, this may c>
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.240281966Z" level=info msg="Docker daemon" commit=a89b842 graphdriver(s)=over>
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.240386856Z" level=info msg="Daemon has completed initialization"
Jun 27 13:07:43 Ubuntu22CT systemd[1]: Started Docker Application Container Engine.
Jun 27 13:07:43 Ubuntu22CT dockerd[2208]: time="2022-06-27T13:07:43.276336600Z" level=info msg="API listen on /run/docker.sock"

عالی! سرویس Docker راه‌اندازی شده است!

اگر سرویس راه اندازی نشده است، دستور زیر را برای راه اندازی سرویس Docker اجرا کنید.

$ sudo systemctl start docker

سرویس Docker را برای شروع خودکار در هر راه‌اندازی مجدد فعال کنید:

$ sudo systemctl enable docker

نسخه نصب شده Docker را می توان با استفاده از دستور پیدا کرد:

$ sudo docker version

خروجی نمونه:

Client: Docker Engine - Community
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:02:46 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:00:51 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
نسخه Docker را بررسی کنید

۴. آزمایش داکر

اجازه دهید پیش برویم و آزمایش کنیم که آیا داکر کار می کند یا خیر؟

برای انجام این کار، اجرا کنید:

$ sudo docker run hello-world

دستور بالا یک تصویر آزمایشی Docker را دانلود می کند و یک نمونه برنامه hello_world را در داخل کانتیر اجرا می کند.

اگر خروجی چیزی شبیه زیر می بینید، به شما تبریک می گوییم! داکر در سیستم اوبونتو ما به خوبی کار می کند.

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete 
Digest: sha256:13e367d31ae85359f42d637adf6da428f76d75dc9afeb3c21faea0d976f5c651
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

من داکر رو نصب کردم حالا چی؟ برای یادگیری اصول Docker، این مقاله را مطالعه کنید.

۵. Docker را ارتقا دهید

برای ارتقاء موتور داکر به آخرین نسخه موجود، به سادگی انجام دهید:

$ sudo apt update
$ sudo apt upgrade
$ sudo apt full-upgrade

۶. Docker را به عنوان کاربر غیر ریشه در لینوکس اجرا کنید (اختیاری)

به طور پیش فرض، Daemon Docker به جای پورت TCP به سوکت یونیکس متصل می شود. از آنجایی که آن سوکت یونیکس متعلق به کاربر ریشه است، دایمون داکر فقط به عنوان کاربر اصلی اجرا می شود. از این رو، کاربران عادی نمی توانند اکثر دستورات Docker را انجام دهند.

اگر می خواهید Docker را به عنوان کاربر غیر ریشه در لینوکس اجرا کنید، به این راهنمای مراجعه کنید.

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

Docker Compose را در اوبونتو نصب کنید

Docker Compose ابزاری است که می تواند برای تعریف و اجرای برنامه های Docker چند کانتینری استفاده شود. با Compose، از یک فایل Compose برای پیکربندی سرویس های برنامه خود استفاده می کنید. سپس، با استفاده از یک فرمان، می توانید تمام سرویس ها را پیکربندی، ایجاد و راه اندازی کنید.

ما می توانیم Docker Compose را با استفاده از یکی از روش های زیر نصب کنیم.

روش ۱ – Docker Compose را با استفاده از باینری نصب کنید

آخرین نسخه Docker Compose را از اینجا دانلود کنید .

دستور زیر را برای دانلود آخرین فایل کامپوزی پایدار Docker اجرا کنید:

$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local /bin/docker-compose

در صورت موجود بودن نسخه جدید کافیست عدد v2.6.1 در دستور بالا را با شماره نسخه جدید جایگزین کنید. لطفاً فراموش نکنید که قبل از شماره نسخه “v” را ذکر کنید.

در نهایت، با استفاده از دستور، مجوزهای اجرایی را به باینری اعمال کنید:

$ sudo chmod +x /usr/local/bin/docker-compose

برای بررسی نسخه docker composer نصب شده، اجرا کنید:

$ docker-compose version
Docker Compose version v2.6.1

روش ۲ – Docker Compose را با استفاده از PiP نصب کنید

از طرف دیگر، می‌توانیم Docker Compose را با استفاده از PIP نصب کنیم . Pip یک مدیر بسته پایتون است که برای نصب برنامه های نوشته شده به زبان برنامه نویسی پایتون استفاده می شود.

برای نصب Pip بر روی سیستم خود به راهنمای زیر مراجعه کنید.

نحوه مدیریت بسته های پایتون با استفاده از Pip

پس از نصب پیپ، دستور زیر را برای نصب docker compose اجرا کنید. دستور زیر برای همه توزیع های لینوکس یکسان است!

$ pip install docker-compose

پس از نصب Docker Compose، می توانید نسخه را با دستور بررسی کنید:

$ docker-compose --version

Docker Engine را حذف نصب کنید

برای حذف Docker Engine از سیستم اوبونتو، اجرا کنید:

$ sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

تصاویر Docker، کانتینرها، volumeها، یا فایل های پیکربندی سفارشی شده روی سیستم شما به طور خودکار حذف نمی شوند.

شما باید با استفاده از دستورات زیر تمام تصاویر، کانتینرها و volumeها را به صورت دستی حذف کنید:

$ sudo rm -rf /var/lib/docker
$ sudo rm -rf /var/lib/containerd

Docker Compose را حذف نصب کنید

اگر Compose را با استفاده از فایل باینری نصب کرده اید، به سادگی آن را از /usr/local/bin/مسیر حذف کنید.

$ sudo rm /usr/local/bin/docker-compose

اگر Compose را با استفاده از PiP نصب کرده اید، دستور زیر را برای حذف Docker Compose اجرا کنید:

$ pip uninstall docker-compose

نتیجه

در این راهنما، در خصوص اینکه داکر چیست و چگونه داکر را در اوبونتو 22.04 LTS Jammy Jellyfish نصب کنیم، بحث کردیم. سپس یاد گرفتیم که چگونه نصب docker را با اجرای تصویر داکر hello-world آزمایش کنیم. در نهایت، آموزش را با نصب Docker compose با استفاده از دو روش مختلف و نحوه حذف Docker Engine و Compose در زمانی که دیگر مورد نیاز نیستند، به پایان رساندیم.

برای نصب Docker در سیستم های مبتنی بر RPM مانند RHEL، Fedora، CentOS، AlmaLinux، Rocky Linux و openSUSE، لینک زیر را بررسی کنید.

منبع:

مهدی منصوری

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

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

مهدی منصوری

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

افزودن نظر

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