داکر چیست؟ #
داکر یک پلتفرم متنباز است که به شما امکان میدهد یک برنامه را در یک محیط کاملاً ایزوله به نام کانتینرها بستهبندی و اجرا کنید. این امنیت و ایزولهسازی شما را قادر میسازد تا چندین کانتینر را به طور همزمان روی یک میزبان مشخص اجرا کنید.
کانتینر داکر چیست؟ #
کانتینرها واحدهای نرمافزاری خودکفا با کد برنامه، پیکربندی و وابستگیهای خاص خود هستند. آنها یک محیط اجرایی پایدار را برای شما فراهم میکنند که به راحتی قابل حمل به میزبانهای مختلف است.
داکر از معماری کلاینت-سرور استفاده میکند. کلاینت با سرویسدهنده داکر (Docker daemon) ارتباط برقرار میکند، که بیشتر کار ساخت، اجرا و توزیع کانتینرها را انجام میدهد.
کلاینت و دیمن میتوانند روی یک میزبان اجرا شوند، یا میتوانید یک کلاینت داکر را به یک دیمن از راه دور متصل کنید. ارتباط کلاینت و دیمن میتواند با استفاده از REST API، سوکتهای یونیکس یا یک رابط شبکه انجام شود.

با داکر میتوانید چرخه عمر کامل توسعه برنامه خود را مدیریت کنید:
- یک برنامه کاربردی و نرمافزار پشتیبان آن را در یک کانتینر توسعه دهید.
- از کانتینر برای آزمایش برنامه خود استفاده کنید.
- برنامه را به عنوان یک کانتینر یا مجموعهای از کانتینرها در محیط عملیاتی مستقر کنید.
نحوه نصب داکر در اوبونتو ۲۰.۰۴ در ۶ مرحله #
حالا که میدانیم داکر چیست و چه کاربردهایی دارد، بیایید در ۶ مرحله به نحوه نصب داکر در اوبونتو ۲۰.۰۴ و نحوه شروع استفاده از آن در اوبونتو بپردازیم.
مرحله ۱: نصب بستههای پیشنیاز #
ابتدا، چند پیشنیاز Docker را نصب کنید که به شما امکان استفاده از انتقال داده SSL ( apt-transport-https)، افزودن گواهینامههای پرکاربرد ( ca-certificates)، مدیریت PPAها ( software-properties-common) و همچنین دانلود دادهها از اینترنت ( curl) را میدهد.
sudo apt install apt-transport-https ca-certificates curl software-properties-common
در مرحله بعد، کلید GPG رسمی مخزن داکر را دانلود کرده و آن را به مدیر کلید قابل اعتماد apt-key اضافه کنید:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
و مخزن نسخه پایدار داکر برای اوبونتو ۲۰.۰۴ (focal) را به لیست منابع APT اضافه کنید:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
شاید بخواهید اولویت منبع نصب docker-ceبسته را دوباره بررسی کنید تا مطمئن شوید که از مخزن نرمافزاری که اخیراً اضافه کردهاید نصب میشود.
apt-cache policy docker-ce

شما باید خروجی مشابهی با دامنه download.docker.com به عنوان منبع اولویتدار مشاهده کنید. در زمان نگارش این راهنما، آخرین نسخه داکر موجود، ۲۰.۱۰.۸~۳-۰ است.
مرحله ۲: نصب داکر #
قبل از نصب هر نرمافزاری، توصیه میشود لیست بستههای موجود را بهروزرسانی کنید . چه به صورت محلی کار میکنید، جدیدترین الزامات بسته نصب را دریافت کنید.
sudo apt update
اکنون زمان نصب نسخه عمومی داکر (Docker Community Edition) فرا رسیده است. این نسخه شامل پلتفرم داکر با تمام ویژگیهای اصلی است، اما پشتیبانی تجاری یا قابلیتهای سازمانی ندارد که اغلب برای کسبوکارهای کوچک و متوسط ضروری نیست.
sudo apt Install Docker-ce
بعد از نصب، سرویس داکر باید فعال و در حال اجرا باشد. میتوانید با استفاده از دستور systemctl status که برای بررسی فعال بودن یک فرآیند systemd خاص استفاده میشود، این موضوع را دوباره بررسی کنید.
sudo systemctl status docker
اگر داکر را با موفقیت نصب کرده باشید، خروجی مشابهی با اطلاعاتی در مورد فعال بودن داکر مشاهده خواهید کرد.

مرحله ۳: شروع استفاده از داکر #
هر دستور داکر باید با دسترسیهای superuser اجرا شود، مگر اینکه کاربر لینوکس شما متعلق به گروه کاربری “docker” باشد که به طور پیشفرض هنگام نصب داکر ایجاد میشود. بیایید از adduserدستور زیر برای اضافه کردن یک کاربر داکر به گروه کاربری داکر استفاده کنیم.
sudo adduser docker docker
هنگام کار با داکر، داشتن اطلاعات کلی سیستم بسیار مفید است. با دستور docker info میتوانید همیشه به این اطلاعات مراجعه کنید تا تعداد کانتینرها (در حال اجرا/مکث/متوقف شده)، انواع افزونهها (ولومها، شبکه، لاگها) و موارد دیگر را بررسی کنید.
اکنون بیایید یک کانتینر آزمایشی را از تصویر آزمایشی پیشفرض hello-world اجرا کنیم.
docker run hello-world
وقتی این دستور را برای اولین بار اجرا میکنید، docker run به صورت محلی به دنبال تصویر Docker (یک الگوی فقط خواندنی با دستورالعملهای مشخص) با نام hello-world میگردد . اگر نتواند تصویر را پیدا کند، آن را در مخزن تصویر Docker Hub جستجو میکند. اگر تصویر پیدا شود، Docker به طور خودکار آن را در یک کانتینر (یک نمونه قابل اجرا از یک تصویر) برای شما دانلود و اجرا میکند.
سپس توضیح مفصلی از آنچه در پشت صحنه اتفاق میافتد در ترمینال شما نمایش داده میشود.

شما میتوانید تصاویر موجود در سیستم خود را با استفاده از دستور زیر مشاهده کنید . در حال حاضر فقط تصویر hello-worlddocker images به صورت محلی در دسترس است ، زیرا به طور خودکار توسط . دانلود شده است.docker run

همچنین یک کانتینر متوقف شده دارید که از تصویر hello-world ایجاد شده است. میتوانید تمام گزارشهای کانتینر را با -aویژگی فهرست کنید (به طور پیشفرض فقط کانتینرهای در حال اجرا را نشان میدهد).
docker container ls -a
![]()
میتوانیم کانتینر تازه ایجاد شده با نام exciting_taussig را ببینیم که ۳ دقیقه پیش با کد خروج ۰ متوقف شده است.
حالا بیایید این کانتینر بلااستفاده را حذف کنیم و بررسی کنیم که آیا با موفقیت حذف شده است یا خیر.
docker rm exciting_taussig
docker container ls -a

فقط پس از حذف کانتینر مرتبط، مجاز به حذف تصویر استفاده نشده hello-world هستید. این کار را انجام دهید و بررسی کنید که آیا با موفقیت حذف شده است یا خیر.
docker rmi hello-world
docker images

مرحله ۴: اجرای کانتینرها از روی تصاویر #
داکر یک کتابخانه تصویر گسترده به نام Docker Hub دارد که در آن میتوانید هزاران ایمیج داکر ایجاد شده توسط فروشندگان رسمی نرمافزار یا اشخاص ثالث را پیدا کنید.
برای مثال، بیایید یک محیط پایه دبیان ایزوله روی میزبان اوبونتو خود بسازیم. اول از همه، در Docker Hub یک ایمیج دبیان جستجو کنید.
docker search debian

میتوانید ببینید که ایمیج دبیان موجود است، ۴۰۲۰ ستاره در Docker Hub دارد و از یک منبع رسمی آمده است.
این تصویر داکر را بدون اجرای خودکار کانتینر از آن دانلود کنید. آخرین نسخه به طور پیشفرض دریافت خواهد شد.
docker pull debian

اکنون میتوانید تصویر داکر خود را اجرا کنید و یک کانتینر جدید از آن ایجاد کنید. بیایید با استفاده از یک شبه ترمینال ( ) یک -dکانتینر جدا شده () در حالت تعاملی ( ) ایجاد کنیم . همچنین شبکه کانتینر را با شبکه میزبان () پل خواهیم زد تا بتوانیم به اینترنت دسترسی داشته باشیم.-i-t--network="bridge"
docker run -itd –network="bridge" debian
![]()
یک رشته هگزادسیمال تصادفی به عنوان شناسه منحصر به فرد کانتینر تازه ایجاد شده به طور خودکار تولید میشود. از آنجایی که کانتینر را در حالت جدا اجرا کردیم، در حال حاضر خروجی دیگری وجود ندارد.
در صورت تمایل، دوباره بررسی کنید که کانتینر جدید شما در حال اجرا است.
docker ps
![]()
میتوانیم ببینیم که کانتینری با نام interesting_wescoff که ۴ ثانیه پیش ایجاد شده، مبتنی بر یک ایمیج دبیان است که به طور پیشفرض یک دستور bash به آن ارسال شده و هیچ پورت سیستمی نگاشت نشده است.
بیایید فعلاً کانتینر در حال اجرا را متوقف کنیم و دوباره کانتینرهای فعال را بررسی کنیم.
docker container stop interesting_wescoff
docker ps

در حال حاضر هیچ کانتینر فعالی وجود ندارد.
مرحله ۵: دستکاری کانتینرهای فعال #
اگر در این مرحله از دستور docker run استفاده کنیم، به طور خودکار یک کانتینر دوم از ایمیج دبیان ایجاد میشود. برای شروع یک کانتینر از قبل موجود، باید از دستور دیگری استفاده کنیم.
docker container start interesting_wescoff

در مرحله بعد، میتوانیم در یک نشست شبه ترمینال تعاملی، یک پوسته خط فرمان روی کانتینر در حال اجرا باز کنیم. باید کانتینر در حال اجرا را هدف قرار داده و مسیر کامل ابزار خط فرمان bash را مشخص کنیم.
docker exec -it interesting_wescoff /bin/bash

میتوانید از پنجره ترمینال مشاهده کنید که نام میزبان شما t3st به شناسه کانتینر acf707828617 تغییر یافته است ، به این معنی که شما با موفقیت یک جلسه تعاملی با ابزار bash آغاز کردهاید.
متأسفانه، ابزار htop وجود ندارد، بنابراین دستور بعدی با شکست مواجه شد. با این وجود، ما قبلاً –network="bridge"پارامتر را مشخص کردهایم، بنابراین باید در کانتینر دبیان خود به اینترنت متصل باشیم و بتوانیم ابزار htop را خودمان نصب کنیم.
apt update && apt install htop
پس از اتمام نصب، میتوانیم htopابزار را درون کانتینر دبیان اجرا کنیم .

حالا بیایید برنامه را ببندیم htopو exitبرای خروج از جلسه تعاملی تایپ کنیم.
همچنین میتوانید از دستور docker exec بدون یک جلسه ترمینال فعال استفاده کنید. اکنون بیایید ابزارها w3mرا mcدر حالت جدا ( -d) نصب کنیم. شما باید -yاز پرچم apt برای موافقت خودکار با تمام درخواستهای نصب، در صورت وجود، استفاده کنید.
docker exec -d interesting_wescoff apt install -y w3m mc
پس از اجرای دستور، هیچ خروجی از کانتینر دریافت نمیکنیم.
با این حال، پس از اجرای یک پوسته خط فرمان روی کانتینر در حالت تعاملی و اجرای apt installمجدد آن، میتوانیم ببینیم که w3mبستهها mcبا موفقیت نصب شدهاند.

و به درستی در حال اجرا هستند.

مرحله ۶: ایجاد تصاویر جدید و ثبت آنها در Docker Hub #
هر تغییری که تاکنون ایجاد کردهایم، فقط روی کانتینر interesting_wescoff اعمال شده است .
اما اگر مرتباً از نرمافزاری استفاده میکنید و نمیخواهید هر بار که یک کانتینر داکر جدید راهاندازی میکنید، آن را از نو نصب کنید، چه؟ اگر نیاز داشته باشید پیکربندی خود را به دستگاه دیگری منتقل کنید تا کار خود را با یک دوست یا همکار به اشتراک بگذارید، چه؟
همانطور که ممکن است به خاطر داشته باشید، ایمیج داکر یک الگوی پایه فقط خواندنی است. با این وجود، میتوان با استفاده از دستور docker commit یک ایمیج محلی جدید ایجاد کرد.
برای اعمال تمام تغییراتی که در کانتینر خود ایجاد کردهایم، ابتدا باید شناسه کانتینر را دریافت کنیم.
docker container ls -a
![]()
میتوانیم ببینیم که شناسه کانتینر ما acf707828617 است .
اکنون میتوانیم تغییرات کانتینر خود را ثبت کرده و با استفاده از الگوی زیر یک تصویر محلی بسازیم: docker commit [container_id] [repository_name]/[image_name].
همچنین میتوانیم -mاز عملوند برای گذاشتن کامنت و -aاز عملوند برای مشخص کردن نام نویسنده استفاده کنیم.
docker commit -m “Installed htop, w3m and mc” -a “redcherries” acf707828617 redcherries/debian_htop_mc_w3m

با تغییرات اعمالشده توسط ما، یک docker commitتصویر محلی ایجاد شد و یک مقدار هش SHA256 منحصر به فرد به آن اختصاص داده شد.
حالا بیایید سعی کنیم تصویر خود را با جهان به اشتراک بگذاریم. برای انجام این کار به یک حساب کاربری Docker Hub نیاز دارید که میتوانید آن را از آدرس https://hub.docker.com/signup دریافت کنید .

پس از ایجاد حساب کاربری، باید از طریق کلاینت داکر خود و با استفاده از نام کاربری و رمز عبور تازه ایجاد شده، وارد داکر هاب شوید.
docker login

قبلاً از docker pull برای دانلود یک تصویر از Docker Hub استفاده میکردیم. برای آپلود یک ایمیج docker به Docker Hub باید از docker pushدستوری با فرمت زیر استفاده کنیم: docker push [repository_name]/[image_name] .
docker push redcherries/debian_htop_mc_w3m

برای بررسی اینکه آیا ارسال موفقیتآمیز بوده است، مخزن خود را در Docker Hub جستجو کنید.
docker search redcherries

همچنین میتوانید از رابط وب برای بررسی حساب کاربری Docker Hub خود استفاده کنید:

حالا بیایید میزبان را پاک کنیم و از docker pullدستور برای دانلود تصویر از Docker Hub استفاده کنیم.

اکنون میتوانید کانتینر دانلود شده را با docker run اجرا کنید و بررسی کنید که آیا w3m از قبل نصب شده است یا خیر.
![]()

برای جمع بندی #
مقاله ما در مورد نحوه نصب داکر روی اوبونتو فقط کاربردهای اولیه داکر را پوشش میدهد. خود داکر مستندات گستردهای دارد که میتوانید برای گسترش دانش داکر و تقویت مهارتهای خود به آدرس https://docs.docker.com به آن دسترسی پیدا کنید.
