داکر (Docker) یک پلتفرم منبع باز برای کانتینر سازی است که به شما امکان میدهد برنامهها و سرویسهای خود را به صورت بستههای جداگانهای به نام کانتینر اجرا کنید. کانتینرها سبک وزن، قابل حمل و انتقال هستند و به شما این امکان را میدهند که برنامههای خود را به طور مستقل از محیط زیربنایی که در آن اجرا میشوند، اجرا نمایید. داکر به عنوان یک پلتفرم برای کانتینر سازی میباشد. کانتینرها بر خلاف ماشینهای مجازی که یک سیستمعامل کامل را شبیه سازی میکنند، از هسته سیستمعامل میزبان استفاده کرده و تنها آنچه برای اجرای برنامه نیاز دارند را استفاده مینمایند. در این مقاله گامبهگام نحوه نصب داکر روی سیستمعامل اوبونتو را به شما آموزش میدهیم.
داکر Docker چیست و چه کاربردهایی دارد؟
چرا باید داکر را روی اوبونتو نصب کنیم؟
دنیای نرمافزار با ظهور کانتینرها متحول شده و داکر به عنوان پیشرو در این عرصه، نقشی کلیدی ایفا میکند. نصب داکر روی اوبونتو، به عنوان سیستمعامل محبوب، مزایای متعددی را برای کاربران به ارمغان میآورد که در ادامه به بررسی آنها میپردازیم.
1. سرعت و چابکی
یکی از بارزترین مزایای نصب داکر روی اوبونتو، افزایش چشمگیر سرعت و چابکی در فرآیند توسعه و استقرار برنامهها است. کانتینرها با حذف نیاز به نصب و پیکربندی جداگانه کتابخانهها و وابستگیها برای هر برنامه، این چابکی را به ارمغان میآورند. به کمک داکر، میتوانید برنامههای خود را به سرعت و به سادگی در محیطهای مختلف، از جمله لپتاپ، سرورهای مجازی و ابر، راهاندازی و اجرا کنید. این امر به ویژه برای تیمهای توسعهای که به طور مداوم در حال بهروزرسانی و انتشار نرمافزار خود هستند، بسیار حائز اهمیت است.
2. ایزوله سازی و امنیت
داکر با ایزوله کردن برنامهها در کانتینرهای مجزا، امنیت و پایداری سیستم را به طور قابل توجهی ارتقا میدهد. هر کانتینر فضای ذخیرهسازی، شبکه و پردازش مختص به خود را دارد و به این ترتیب، بروز مشکل در یک کانتینر، بر عملکرد سایر کانتینرها یا سیستمعامل میزبان تاثیر نمیگذارد. این قابلیت ایزوله سازی، از بروز تداخلات بین برنامهها و همچنین نفوذ بدافزار به سایر بخشهای سیستم جلوگیری کرده و محیطی امن و قابلاعتماد برای اجرای برنامهها فراهم میآورد.
3. قابلیت حمل و انعطافپذیری
یکی از مزایای کلیدی داکر، قابلیت حمل بالای آن است. برنامههای کانتینر شده به همراه تمام وابستگیهای خود در یک بسته واحد ارائه میشوند و به این ترتیب، میتوان آنها را به سادگی بین محیطهای مختلف، از جمله سیستمهای عامل و پلتفرمهای ابری، جابجا کرد. این قابلیت انعطافپذیری، داکر را به ابزاری ایدهآل برای توسعهدهندگانی تبدیل میکند که نیاز به استقرار برنامههای خود در محیطهای مختلف را دارند.
4. مقیاسپذیری و پویایی
با داکر، میتوانید به راحتی تعداد کانتینرهای در حال اجرا را متناسب با تقاضا افزایش یا کاهش دهید. این امر، داکر را به ابزاری ایدهآل برای برنامههای وب با ترافیک متغیر تبدیل میکند. به عنوان مثال، میتوانید در زمانهای افزایش تقاضا، تعداد کانتینرها را افزایش دهید تا از افت عملکرد برنامه جلوگیری نمایید و در زمانهای کمکاری، تعداد کانتینرها را کاهش دهید تا در مصرف منابع صرفهجویی شود.
5. کاهش هزینهها
استفاده از داکر میتواند به طور قابلتوجهی هزینههای مربوط به زیرساخت نرمافزاری را کاهش دهد. کانتینرها به دلیل وزن کم و نیاز به منابع سیستمی پایین، از سرورهای مجازی کارآمدتر هستند. علاوه بر این داکر با حذف نیاز به نصب و پیکربندی جداگانه کتابخانهها و وابستگیها برای هر برنامه، به صرفهجویی در زمان و منابع انسانی نیز کمک میکند.
6. مدیریت آسان
داکر ابزارهای قدرتمندی برای مدیریت کانتینرها، از جمله راهاندازی، توقف، حذف، مشاهده لاگها و مانیتورینگ ارائه میدهد. با استفاده از داکر، میتوانید به طور مرکزی بر کانتینرهای خود نظارت داشته باشید و در صورت بروز مشکل، به سرعت آنها را عیبیابی و رفع کنید.
7. جامعه کاربری گسترده
داکر از جامعه کاربری بسیار فعال و پرشماری برخوردار است که به شما در حل مشکلات و یافتن راهکارهای جدید کمک میکنند. منابع آموزشی و مستندات آنلاین متعددی نیز برای داکر در دسترس است که به شما کمک مینماید تا به سرعت از این ابزار قدرتمند استفاده کنید.
نصب وردپرس روی داکر (Wordpress on Docker)
پیشنیازهای نصب داکر روی اوبونتو 22.04
برای نصب داکر با استفاده از روشی که در ادامه بیان میکنیم، به موارد زیر نیاز دارید:
· سرور اوبونتو 22.04: این سرور باید با یک کاربر غیر ریشه با مجوز sudo و فایروال پیکربندی شده باشد.
· حساب کاربری: Docker Hub برای استفاده از تصاویر داکر موجود در مخزن Docker Hub به یک حساب کاربری نیاز دارید.
· دسترسی به اینترنت: برای دانلود بستههای نصب داکر و تصاویر داکر به اتصال به اینترنت نیاز دارید.
اگر سرور اوبونتو 22.04 ندارید، میتوانید از یک ارائهدهنده خدمات ابری مانند DigitalOcean یا Linode یک سرور مجازی تهیه کنید. پس از تهیه سرور مورد نیاز، میتوانید مراحل نصب داکر را که در ادامه این مقاله آمده است، دنبال نمایید.
آموزش نصب داکر روی سیستمعامل اوبونتو
در ادامه شما را با نحوه نصب و راهاندازی داکر روی اوبونتو به صورت گامبهگام آشنا خواهیم کرد.
گام اول: نصب و راهاندازی داکر
مخزن اوبونتو ممکن است آخرین نسخه داکر را ارائه ندهد. به همین دلیل برای اطمینان از دریافت جدیدترین نسخه، بهتر است آن را از مخزن رسمی داکر نصب کنید. در این بخش، مراحل اضافه کردن مخزن داکر، نصب بستهها و تایید صحت نصب را شرح میدهیم.
1. بهروزرسانی لیست پکیجها:
sudo apt update
2. نصب پکیجهای پیشنیاز: این پکیجها به apt اجازه میدهند تا از طریق HTTPS پکیجها را دریافت کند.
sudo apt install apt-transport-https ca-certificates curl software-properties-common
3. افزودن کلید GPG مخزن داکر: با این دستور، کلید GPG مخزن رسمی داکر به سیستم شما اضافه میشود.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg -dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
4. اضافه کردن مخزن داکر به لیست منابع APT: با این دستور، مخزن داکر به لیست منابع APT اضافه میگردد.
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
5. بهروزرسانی مجدد لیست پکیجها: با این دستور، لیست پکیجها دوباره بهروزرسانی میشود تا مخزن جدید داکر شناسایی گردد.
sudo apt update
6. تایید صحت مخزن داکر: با این دستور، میتوانید مطمئن شوید که داکر را از مخزن رسمی آن و نه مخزن پیشفرض اوبونتو نصب میکنید.
apt-cache policy docker-ce
نتیجه این دستور باید مشابه این باشد:
docker-ce:
Installed: none
Candidate: 5:20.10.14~3-0~ubuntu-jammy
Version table:
5:20.10.14~3-0~ubuntu-jammy 500
500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
5:20.10.13~3-0~ubuntu-jammy 500
500 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages
توجه: تا این مرحله، داکر هنوز نصب نشده است.
7. نصب داکر: با این دستور، داکر نصب میشود.
sudo apt install docker-ce
8. تایید نصب: با این دستور، میتوانید بررسی کنید که داکر نصب شده، دیمن آن در حال اجرا است و برای اجرا در هنگام بوت شدن فعال شده است.
sudo systemctl status docker
نتیجه این دستور باید به این شکل باشد و نشان دهد که سرویس فعال و در حال اجرا است:
Output
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-04-01 21:30:25 UTC; 22s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 7854 dockerd
Tasks: 7
Memory: 38.3M
CPU: 340ms
CGroup: /system.slice/docker.service
└─7854 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/
گام دوم: اجرای دستور داکر بدون Sudo
به طور پیشفرض، دستور docker فقط توسط کاربر روت یا کاربرانی که عضو گروه docker هستند قابل اجرا است. این گروه به طور خودکار در طول نصب داکر ایجاد میشود. اگر میخواهید بدون نیاز به sudo یا عضویت در گروه docker از دستور docker استفاده کنید، با خطای زیر مواجه خواهید شد:
Output
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
برای حل این مشکل، میتوانید نام کاربری خود را به گروه docker اضافه نمایید:
sudo usermod -aG docker ${USER}
پس از اضافه شدن به گروه، باید از سیستم خارج شده و دوباره وارد شوید یا از دستور زیر استفاده نمایید:
su - $ USER
سپس با وارد کردن دستور زیر میتوانید عضویت خود در گروه را تایید کنید:
groups
در صورتی که خروجی شامل docker باشد، شما به طور موفقیت آمیز به گروه اضافه شدهاید.
نکته: اگر میخواهید کاربری را به گروه docker اضافه نمایید که در حال حاضر وارد سیستم نیست، میتوانید از دستور زیر استفاده کنید و نام کاربری مورد نظر را به جای username بنویسید.
sudo usermod -aG docker username
در گامهای بعدی، فرض بر این است که شما به عنوان کاربری که عضو گروه docker است، دستورات docker را اجرا میکنید. در غیر این صورت، لطفا دستورات را با sudo پیشوند دهید.
گام سوم: استفاده از دستور Docker
دستور docker از زنجیرهای از گزینهها (options)، دستورات (commands) و آرگومانها (arguments) تشکیل شده است. ساختار کلی دستور به صورت زیر میباشد:
docker [option] [command] [arguments]
برای مشاهده لیست کامل دستورات subcommands و توضیحات مختصری از هر کدام، میتوانید از دستور زیر استفاده کنید:
docker
در نسخه ۲۰.۱۰.۱۴ داکر، لیست دستورات شامل موارد زیر است:
-
Attach: اتصال ورودی، خروجی و جریان خطای استاندارد محلی به یک کانتینر در حال اجرا
-
Build: ساخت یک تصویر از یک Dockerfile
-
commit: ایجاد یک تصویر جدید از تغییرات یک کانتینر
-
cp : کپی کردن فایلها/پوشهها بین یک کانتینر و سیستم فایل محلی
-
create: ایجاد یک کانتینر جدید
-
diff: بررسی تغییرات فایلها یا دایرکتوریها در سیستم فایل یک کانتینر
-
events: دریافت رویدادهای بلادرنگ از سرور
-
exec: اجرای یک دستور در یک کانتینر در حال اجرا
-
Export: صادر کردن سیستم فایل یک کانتینر به عنوان یک آرشیو tar
-
history: نمایش تاریخچه یک تصویر
-
Images: لیست تصاویر
-
Import: وارد کردن محتوای یک tarball برای ایجاد یک تصویر سیستم فایل
-
info: نمایش اطلاعات کلی سیستم
-
Inspect: بازگشت اطلاعات سطح پایینی در مورد اشیاء داکر
-
Kill: کشتن یک یا چند کانتینر در حال اجرا
-
Load: بارگیری یک تصویر از یک آرشیو tar یا STDIN
-
Login: ورود به یک رجیستری داکر
-
Logout: خروج از یک رجیستری داکر
-
Logs: دریافت گزارشهای یک کانتینر
-
Pause: متوقف کردن تمام فرآیندها در یک یا چند کانتینر
-
port: لیست نگاشتهای پورت یا یک نگاشت خاص برای کانتینر
-
ps: لیست کانتینرها
-
pull: کشیدن یک تصویر یا مخزن از یک رجیستری
-
Push: فشار دادن یک تصویر یا مخزن به یک رجیستری
-
Rename: تغییر نام یک کانتینر
-
restart: راهاندازی مجدد یک یا چند کانتینر
-
rm: حذف یک یا چند کانتینر
-
Rmi: حذف یک یا چند تصویر
-
Run: اجرای یک دستور در یک کانتینر جدید
-
Save: ذخیره یک یا چند تصویر در یک آرشیو tar (به طور پیشفرض به STDOUT منتقل میشود)
-
search: جستجو در Docker Hub برای تصاویر
-
Start: راهاندازی یک یا چند کانتینر متوقف شده
-
Stats: نمایش یک جریان زنده از آمار استفاده از منابع کانتینر(ها)
-
Stop: متوقف کردن یک یا چند کانتینر در حال اجرا
-
tag: ایجاد یک تگ TARGET_IMAGE که به SOURCE_IMAGE اشاره دارد.
-
Top: نمایش فرآیندهای در حال اجرا در یک کانتینر
-
unpause: از سرگیری تمام فرآیندها در یک یا چند کانتینر
-
update: بهروزرسانی پیکربندی یک یا چند کانتینر
-
version: نمایش اطلاعات نسخه داکر
-
wait: مسدود کردن تا زمانی که یک یا چند کانتینر متوقف شوند، سپس کدهای خروج آنها را چاپ کنید.
برای مشاهده گزینههای موجود برای یک دستور خاص، میتوانید از دستور زیر استفاده کنید:
docker docker-subcommand --help
برای مشاهده اطلاعات کلی سیستم System-wide درباره Docker، از دستور زیر استفاده نمایید:
docker info
غول کانتینر سازی در خدمت چه کارهایی است؟ دنیایی از کاربردهای داکر!
داکر(Docker)، فراتر از یک ابزار ساده برای نصب و اجرای برنامهها عمل میکند. این غول نرمافزاری، کاربردهای گستردهای در زمینههای مختلف توسعه و استقرار نرمافزار ارائه میدهد که در ادامه به بررسی برخی از مهمترین آنها میپردازیم.
1. توسعه و تست نرمافزار
-
محیطهای ایزوله: داکر به توسعهدهندگان این امکان را میدهد تا برای هر برنامه، یک محیط ایزوله و مجزا ایجاد کنند. این امر باعث میشود تا تداخلات بین برنامهها به حداقل برسد و هر برنامه به طور مستقل و بدون تاثیرگذاری بر سایر برنامهها، تست شود.
-
قابلیت تکرار: کانتینرها به طور دقیق قابل تکرار هستند، به این معنی که میتوان آنها را در هر محیطی، از جمله لپتاپ، سرورهای محلی و ابر، به طور دقیق و بدون هیچگونه تغییری اجرا کرد. این قابلیت، تست و اشکالزدایی برنامهها را در مراحل مختلف توسعه، بسیار آسانتر مینماید.
-
افزایش سرعت: کانتینرها به سرعت راهاندازی و اجرا میشوند که باعث صرفهجویی در زمان و افزایش سرعت توسعه نرمافزار میگردد.
2. استقرار برنامه
-
استقرار آسان: داکر استقرار برنامهها در محیطهای مختلف، از جمله سرورهای فیزیکی، ماشینهای مجازی و ابر، ساده و خودکار میکند.
-
قابلیت مقیاسپذیری: با استفاده از داکر، میتوان به راحتی تعداد کانتینرها را برای پاسخگویی به تقاضا افزایش یا کاهش داد. این امر، داکر را به ابزاری ایدهآل برای برنامههای وب با ترافیک متغیر تبدیل میکند.
-
قابلیت اطمینان: کانتینرها به طور مستقل اجرا میشوند و در صورت بروز مشکل در یک کانتینر، سایر کانتینرها تحت تاثیر قرار نمیگیرند. این امر، پایداری و قابلیت اطمینان برنامههای مستقر شده را افزایش میدهد.
3. مدیریت سیستم
-
مدیریت کانتینرها: داکر ابزارهای قدرتمندی برای مدیریت کانتینرها، از جمله راهاندازی، توقف، حذف، مشاهده لاگها و مانیتورینگ ارائه میدهد.
-
ایجاد میکرو سرویسها: داکر بستر ایدهآلی برای ساخت و اجرای میکرو سرویسها است. میکرو سرویسها واحدهای کوچکی از نرمافزار هستند که هر کدام وظیفهای خاص را انجام میدهند. داکر به شما کمک میکند تا میکرو سرویسها را به طور مستقل توسعه، استقرار و مدیریت کنید.
-
اتوماسیون: داکر با ابزارهای اتوماسیون مانند Ansible و Kubernetes به خوبی ادغام میشود و به شما امکان میدهد تا فرآیندهای استقرار و مدیریت سیستم را به طور خودکار انجام دهید.
4. سایر کاربردها
-
ذخیرهسازی و اشتراکگذاری کد: داکر تصاویری از برنامهها را ایجاد میکند که شامل تمام وابستگیهای برنامه است. این تصاویر را میتوان به راحتی ذخیره و با دیگران به اشتراک گذاشت.
-
ایجاد پلتفرمهای توسعه: داکر برای ایجاد پلتفرمهای توسعه به کار میرود که به توسعهدهندگان امکان میدهد تا به طور مشترک بر روی پروژهها کار کنند.
-
ایجاد ابزارهای DevOps: داکر در ابزارهای DevOps برای اتوماسیون فرآیندهای توسعه، استقرار و مدیریت نرمافزار استفاده میشود.
نتیجهگیری
در این مقاله، مراحل نصب و پیکربندی Docker روی سیستمعامل اوبونتو به طور کامل شرح داده شد. با انجام مراحل ارائه شده میتوانید Docker را با موفقیت روی سیستم خود نصب و از آن برای ایجاد، اجرا و مدیریت کانتینرها استفاده کنید.
سوالات متداول
چگونه میتوانم بررسی کنم که داکر با موفقیت نصب شده است؟
برای بررسی اینکه داکر با موفقیت نصب شده است، میتوانید دستور زیر را اجرا کنید: sudo docker run hello-world این دستور یک کانتینر از تصویر hello-world را اجرا میکند و پیام "Hello, World!" را چاپ مینماید. اگر این دستور با موفقیت اجرا شود، نشان میدهد که داکر به درستی نصب شده است.
چگونه میتوانم بدون استفاده از sudo از داکر استفاده کنم؟
برای اینکه بتوانید بدون استفاده از sudo از داکر استفاده کنید، باید کاربر خود را به گروه docker اضافه نمایید. میتوانید این کار را با دستور زیر انجام دهید: sudo usermod -aG docker $USER پس از اضافه کردن کاربر خود به گروه docker، باید از سیستم خارج شده و دوباره وارد شوید تا تغییرات اعمال شوند. سپس میتوانید بدون استفاده از sudo از داکر استفاده کنید.
چگونه میتوانم مخزن داکر را پیکربندی کنم؟
میتوانید با ایجاد یک فایل به نام config.json در دایرکتوری ~/.docker/config.json مخزن داکر را پیکربندی کنید. این فایل باید شامل اطلاعات مربوط به مخزن داکر شما، مانند نام کاربری و رمز عبور شما باشد.
آیا برای استفاده از Docker نیاز به دانش برنامهنویسی دارم؟
نیاز به دانش برنامهنویسی در سطح پیشرفته برای استفاده از Docker نیست. با این حال، آشنایی با مفاهیم بنیادی برنامهنویسی و نحوه کار با خط فرمان به شما کمک میکند تا از Docker به طور موثرتر استفاده نمایید.