داکر (Docker) یک پلتفرم متنباز برای ساخت، انتشار و اجرای اپلیکیشنهاست که استقرار آنها را در یک محیط مستقل از سیستم عامل و بر بستر سختافزاری میزبان ممکن میکند. در داکر، اپلیکیشنها بهشکل کانتینر (Container) اجرا میشوند که یکی از مزیتهای آن، ایجاد محیطی ایزوله برای هر اپلیکیشن و جلوگیری از انتشار تغییرات در محیط سیستم عامل است. همچنین بهکمک داکر، میتوانید اپلیکیشنهای خود را به سادگی در بسترهای مختلف اجرا کنید و آنها را در محیطهای مختلف توسعه دهید، تست و یا اجرا کنید.
Docker با استفاده از تکنولوژیهایی مانند محیط اجرایی Docker Engine و Docker Compose ارایه شده است و در حال حاضر به عنوان یکی از ابزارهای مهم IT شناخته میشود.
در این راهنما شیوهی نصب داکر روی Ubuntu 20.04 را بهشکل گامبهگام بررسی میکنیم.
پیشنیازها
-
یک ابرک با سیستمعامل Ubuntu که دارای یک کاربر sudo و فایروال باشد.
-
یک حساب کاربری در Docker Hub
نصب داکر
پیش از نصب Docker برای اولین بار روی یک سرور، باید مخزن Docker را راهاندازی کنید، تا بتوانید داکر را از مخزن رسمیاش نصب و یا بهروزرسانی کنید.
۱. ابتدا apt را بهروز میکنیم و بستههایی که امکان استفاده از یک مخزن روی پروتکل HTTPS را میدهند نصب میکنیم.
sudo apt-get update sudo apt-get install \ ca-certificates \ curl \ gnupg
۲. کلیدهای GPG رسمی داکر را به سرور اضافه میکنیم:
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
۳. با استفاده از دستور زیر ریپازیتوری را تنظیم میکنیم:
echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
۴. apt را آپدیت میکنیم:
sudo apt-get update
۵. با دستور زیر Docker Engine ،Containerd و Docker Compose را نصب میکنیم.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
۶. به کمک دستور زیر و با اجرای ایمیج hello-word بررسی میکنیم که فرآیند نصب به درستی طی شده باشد:
sudo docker run hello-world
این دستور یک ایمیج را دریافت میکند و آن را در یک کانتینر اجرا میکند. سپس کانتینر یک پیام تایید نمایش داده و خارج میشود.
استفاده از داکر
برای استفاده از داکر باید از دستورهایی با عبارت docker
docker [option] [command] [arguments]
برای مشاهدهی دستورهای ممکن میتوانید از دستور زیر استفاده کنید:
docker
همچنین میتوانید بهشکل زیر برای هر دستوری Optionهای ممکن را بررسی کنید:
docker docker-subcommand --help
کار کردن با ایمیجهای داکر
کانتینرهای داکر در واقع از تصاویر یا Imageهای داکر ساخته میشوند. بهطور پیشفرض، Docker این تصاویر را از Docker Hub، رجیستری رسمی داکر، Pull یا دریافت میکند. هر کسی میتواند تصاویر Docker خود را در Docker Hub میزبانی کند، و تصاویر بیشتر برنامهها و توزیعهای لینوکسی که به آنها نیاز دارید، آنجا میزبانی میشوند.
با استفاده از ترکیب docker
search
docker search ubuntu
در ستون OFFICIAL، مقدار OK بیانگر این است که ایمیج بهوسیلهی شرکت رسمی پروژه ساخته شده و پشتیبانی میشود. هنگامی که ایمیجی را که بهدنبال آن بودید پیدا کردید، میتوانید آن را با استفاده از دستور Pull دانلود کنید.
docker pull ubuntu
پس از دریافت یک ایمیج، میتوانید با استفاده از آن و دستور run، یک کانتینر را اجرا کنید. همانطور که در مثال hello-world مشاهده کردید، اگر زمانی که Docker با دستور run اجرا شود و ایمیجی از پیش دانلود نشده باشد، ابتدا Docker ایمیج را دانلود میکند، سپس یک کانتینر را با استفاده از آن اجرا میکند.
برای مشاهده ایمیجهایی که در سیستم شما دانلود شدهاند، دستور زیر را وارد کنید:
docker images
خروجی مشابه زیر مشاهده خواهید کرد:
REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 1d622ef86b13 3 weeks ago 73.9MB hello-world latest bf756fb1ae65 4 months ago 13.3kB
اجرای کانتینر داکر
کانتینر hello-world
برای نمونه، یک کانتینر را با استفاده از آخرین تصویر اوبونتو اجرا میکنیم. ترکیب سوییچهای i و t به شما امکان دسترسی تعاملی Shell را به کانتینر میدهد:
docker run -it ubuntu
ترمینال شما باید تغییر کند تا نشان دهد که اکنون داخل کانتینر کار میکنید و باید به این شکل باشد:
root@a5c247g5h738:/#
به شناسهی کانتینر در ترمینال توجه کنید. در این مثال a5c247g5h738 است.
اکنون میتوانید هر دستوری را داخل کانتینر اجرا کنید. مثلن میتوانید بستههای کانتینر را بهروز کنید. نیازی به وارد کردن هیچ دستوری با sudo ندارید، زیرا به عنوان کاربر root داخل کانتینر کار میکنید:
apt update
سپس میتوانید هر برنامهای را در آن نصب کنید. مثلن با دستور زیر Node.js را نصب کنید:
apt install nodejs
پس از اتمام نصب، بررسی کنید که Node.js نصب شده باشد:
node -v
در خروجی نسخهی آن را در ترمینال خود خواهید دید:
version 10.19.0
توجه داشته باشید که هر تغییری که داخل کانتینر ایجاد میکنید فقط برای همان کانتینر اعمال میشود.
برای خروج از کانتینر، exit را در ترمینال تایپ کنید.
مدیریت کانتینرها
پس از مدتی استفاده از Docker، کانتینرهای فعال (در حال اجرا) و غیرفعال زیادی در سرور خود خواهید داشت. برای بررسی موارد فعال از:
docker ps
خروجی مشابه زیر خواهید بود:
CONTAINER ID IMAGE COMMAND CREATED
در این راهنما شما دو کانتینر را شروع کردید. یکی از ایمیج hello-world و دیگری از ایمیج اوبونتو. هر دو کانتینر دیگر در حال اجرا نیستند، اما همچنان در سیستم شما وجود دارند.
برای مشاهده همه کانتینرها، فعال و غیر فعال، docker ps را با سوییچ a اجرا کنید:
docker ps -a
خروجیای که خواهید دید:
1c08a7a0d0e4 ubuntu "/bin/bash" 2 minutes ago Exited (0) 8 seconds ago quizzical_mcnulty a707221a5f6c hello-world "/hello" 6 minutes ago Exited (0) 6 minutes ago youthful_curie
برای مشاهدهی آخرین کانتینری که ایجاد کرده اید، سوییچ l را به آن منتقل کنید:
docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a5c247g5h738 ubuntu "/bin/bash" 2 minutes ago Exited (0) 40 seconds ago quizzical_mcnulty
برای راهاندازی یک کانتینر متوقف شده، از docker start و سپس شناسه یا نام کانتینر استفاده کنید. مثلن کانتینر اوبونتو را با شناسه a5c247g5h738 راهاندازی کنید:
docker start a5c247g5h738
کانتینر شروع میشود و میتوانید از docker ps برای مشاهده وضعیت آن استفاده کنید:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a5c247g5h738 ubuntu "/bin/bash" 2 minutes ago Up 5 seconds quizzical_mcnulty
برای توقف یک کانتینر در حال اجرا، از docekr stop
docker stop quizzical_mcnulty
هنگامی که دیگر نیازی به کانتینر نداشتید، آن را با دستور docker rm
docker ps -a
docker rm youthful_curie
می توانید یک کانتینر جدید راه اندازی کنید و با استفاده از سوییچ name– نامی برای آن بگذارید. همچنین میتوانید از سوییچ rm– برای ایجاد کانتینری استفاده کنید که پس از توقف، خود را حذف میکند.
برای اطلاعات بیشتر در مورد این گزینهها و سایر آنها دستور docker run help