برنامههای خودمیزبانی در حال افزایش هستند و بسیاری از آنها تحت مجوزهای متن باز یا کد منصفانه فعالیت میکنند که شما را از پرداخت هزینههای اشتراک یا هزینههای مبتنی بر استفاده معاف میکند. با داکر، میتوانید هر تعداد برنامه خودمیزبانی را بر روی یک سرور وب استاندارد یا رایانه محلی در محیطهای کاملاً جداگانه با استفاده از منابع تقسیم شده اجرا کنید. با تشکر از Docker Hub، شما همچنین به مجموعهای از برنامهها و پروژههای نگهداری شده توسط جامعه دسترسی پیدا میکنید که برای راهاندازی آنها به تلاش بسیار کمی نیاز دارید. در این راهنمای گامبهگام، به شما نشان میدهم که چگونه برنامههای داکر را با استفاده از هر ایستگاه کاری مبتنی بر لینوکس یا سرور VPS خودمیزبانی کنید، از نصب Docker Engine گرفته تا راهاندازی برنامههای کانتینری با Docker Compose. حتی درباره برخی از برنامههای محبوب داکر صحبت خواهیم کرد تا اگر مطمئن نیستید که این تنظیمات چه کارهایی میتواند برای شما انجام دهد، شروع کنید. بیایید شروع کنیم.
داکر چیست؟
داکر یک پلتفرم متن باز است که نرمافزار شما را به صورت کانتینرهای جداگانه بستهبندی میکند. یک کانتینر، در صورتی که تعجب کردهاید، دقیقاً همان چیزی است که به نظر میرسد — یک بخش محصور از سرور یا دستگاه شما که شامل تمام کدها، کتابخانهها و تنظیمات مرتبط با یک برنامه است. کانتینرها همچنین تخصیصهای منابع جداگانهای دارند، بنابراین میتوانید مطمئن باشید که یک برنامه بیشتر از آنچه که باید از سیستم شما استفاده نمیکند. برنامههای خودمیزبانی به “وابستگیهای” خاصی، مانند پایگاههای داده، زبانهای برنامهنویسی، ابزارهای سیستمی و غیره وابسته هستند. به همین دلیل است که بیشتر آنها توصیه میکنند از طریق داکر نصب شوند، تا وابستگیهای نصب شده برای یک برنامه، وابستگیهای برنامه یا سرویس دیگر را مختل نکند. برنامههای داکر کاملاً از یکدیگر ایزوله هستند تا از منابع یکسان استفاده نکنند یا در زمان اجرا یکدیگر را مختل نکنند. شما نیازی به یادگیری همه چیز درباره داکر ندارید تا یک برنامه را خودمیزبانی کنید، اما دانستن برخی از مبانی کمک میکند. به سادگی، Docker Engine پلتفرم اصلی است که برنامههای شما را ایزوله میکند؛ تصاویر کتابخانههای پروژهای هستند که برای نصب یک برنامه یا سرویس استفاده میشوند، Docker Hub یک کتابخانه عمومی از تصاویر برای برنامههایی است که میتوانید با استفاده از داکر اجرا کنید و Docker Compose یک افزونه است که به شما اجازه میدهد چندین کانتینر داکر را به طور همزمان برای برنامههای پیچیدهتر راهاندازی کنید.
چرا به Docker Compose نیاز دارم؟
اکنون که به این نکته پرداختهایم، بیشتر برنامهها به اندازه کافی ساده نیستند که از یک کانتینر منفرد اجرا شوند. آنها معمولاً یک مؤلفه frontend، یک backend برای مدیران و همچنین پایگاههای دادهای دارند که برای ذخیره و بازیابی اطلاعات استفاده میشوند. به جای اینکه هر بار که نیاز به اجرای مجدد برنامه دارید، هر کانتینر داکر را به طور جداگانه با تایپ docker run در ترمینال لینوکس یا SSH راهاندازی کنید، میتوانید یک فایل compose.yaml ایجاد کنید تا مشخص کنید کدام کانتینرها و سرویسها باید با هم اجرا شوند. این همان چیزی است که Docker Compose به شما کمک میکند انجام دهید. پس از ایجاد فایل compose.yaml، داکر کامپوز میتواند به شما کمک کند تا کل برنامه را با استفاده از یک فرمان واحد اجرا کنید:
`
docker compose up
`
شما همچنین میتوانید از docker compose stop برای موقت متوقف کردن برنامه خود و از docker compose down برای متوقف کردن کامل و پاک کردن کانتینرها برای آمادهسازی برای استقرار دیگر استفاده کنید.
چگونه یک برنامه داکر را به صورت خودمیزبانی راهاندازی کنیم؟
اکنون که با مبانی آشنا شدید، بیایید روند دقیق خودمیزبانی یک برنامه کانتینری با Docker Engine و Docker Compose را بررسی کنیم.
##### پیشنیازها
- یک سرور خانگی مبتنی بر لینوکس یا VPS که نسخهای جدید از Ubuntu یا Debian را اجرا کند.
- دسترسی ریشه به آن سرور.
- یک کلاینت SSH بر روی رایانه خود (که در macOS، لینوکس و ترمینالهای مدرن ویندوز ساخته شده است) برای تعامل با سرور شما.
- آدرس IP سرور و اعتبارنامههای SSH شما.
##### مرحله 1: اتصال به سرور خود از طریق SSH
به ترمینال در دستگاه محلی macOS، لینوکس یا ویندوز خود دسترسی پیدا کنید. ما میتوانیم از اینجا با استفاده از اعتبارنامههای SSH و IP سرور شما وارد سرور شوید. دستور زیر را برای شروع وارد کنید:
`
ssh username@your-server-ip
`
مطمئن شوید که رمز عبور SSH خود را هنگام درخواست وارد کنید. اکنون شما یک لینک مستقیم از دستگاه فعلی خود به سروری که داکر را بر روی آن نصب خواهید کرد، برقرار کردهاید. حالا قبل از ادامه، کتابخانهها و بستههای سرور خود را به نسخه جاری بهروزرسانی کنید. به این ترتیب، با نصب هیچ تضادی مواجه نخواهید شد و آخرین وصلههای امنیتی بلافاصله اضافه خواهند شد.
`
sudo apt update && sudo apt upgrade -y
`
##### مرحله 2: نصب Docker Engine
شما میتوانید جدیدترین نسخه Docker Engine را از مخزن رسمی آن دریافت کنید. ابتدا با نصب گواهیهای لازم و کلید GPG داکر شروع کنید:
`
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
`
شما همچنین باید مخزن رسمی داکر را به لیست منابع بستههای خود اضافه کنید:
`
echo “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo “$VERSION_CODENAME”) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
`
حال بستههای خود را بهروزرسانی کرده و Docker Engine را با Compose نصب کنید:
`
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
`
پس از اتمام فرآیند، میتوانید با یک بررسی سریع نسخه تأیید کنید که داکر به درستی همراه با کامپوز نصب شده است:
`
docker –version
docker compose version
`
اگر در حین نصب مشکلی پیش بیاید، شما یک پیام خطای “command not found” را در ترمینال به جای شماره نسخهها مشاهده خواهید کرد. این به این معنی است که باید هر مرحله را دوباره انجام دهید در صورتی که چیزی را از دست دادهاید.
##### مرحله 3: راهاندازی دایرکتوری پروژه
اکنون که داکر نصب شده است، میتوانیم به آمادهسازی دایرکتوری پروژه برای برنامه خودمیزبانی شما برویم. ابتدا، من دوست دارم یک دستور سریع اجرا کنم تا مطمئن شوم که داکر برای همه کاربران قابل دسترسی است، نه فقط برای کسانی که دارای مجوزهای sudo یا root هستند. در اینجا دستور برای تغییر این مجوزها آمده است:
`
sudo usermod -aG docker $USER
`
از سیستم خارج شوید و سپس ترمینال خود را دوباره راهاندازی کنید تا مجوزهای استفاده بهروزرسانی شود. اکنون میتوانید دایرکتوری پروژه واقعی را ایجاد کرده و به آن بروید:
`
mkdir ~/my-app && cd ~/my-app
`
##### مرحله 4: نوشتن فایل YAML خود
شما آمادهاید تا فایل compose.yaml را در دایرکتوری پروژه خود بنویسید. این دستور را برای ورود به ویرایشگر نانو اجرا کنید:
`
nano compose.yaml
`
اکنون محتوای compose.yaml را طبق دستورالعملهای تنظیم برنامه داکر خود بچسبانید. معمولاً، فایل compose.yaml باید شامل یک فیلد تصویر برای تصویر پروژه شما، یک نام کانتینر، یک فیلد حجم که زیرپوشههای پروژه شما را نقشهبرداری میکند و پورت خاصی که برنامه در آن راهاندازی خواهد شد، باشد. در اینجا یک مثال از فایل YAML برای یک برنامه نظارت بر وضعیت به نام Uptime Kuma آورده شده است:
`yaml
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
– ./uptime-kuma-data:/app/data
ports:
– “3001:3001”
restart: unless-stopped
`
فایل را ذخیره کرده و از ویرایشگر خارج شوید. اگر این کار برایتان ترسناک به نظر میرسد، نگران نباشید. شما باید دستورالعملهای خاصی برای ایجاد فایل YAML خود را در دستورالعملهای تنظیم برنامه داکر خود در Docker Hub یا GitHub پیدا کنید.
##### مرحله 5: راهاندازی برنامه خود
تنها چیزی که باقی مانده است، راهاندازی برنامه داکر شما با استفاده از Compose است. شما میتوانید تمام کانتینرهای داکر خود را در هر دایرکتوری پروژه با اجرای این دستور واحد راهاندازی کنید:
`
docker compose up -d
`
پس از اینکه کانتینرها بالا و در حال اجرا شدند، که معمولاً کمتر از یک دقیقه طول میکشد، میتوانید با مراجعه به این آدرس از مرورگر وب خود به برنامهتان دسترسی پیدا کنید:
`
http://your-server-ip:3001
`
مطمئن شوید که آدرس IP سرور خانگی یا VPS خود را با آدرس واقعی جایگزین کنید، که به صورت «192.168.1.1» (IPv4) یا «[2001:0db8:85a3:0000:0000:8a2e:0370:7334]» (IPv6) به نظر میرسد. (اعتبار تصویر: داکر)
چند برنامه داکر که ارزش امتحان کردن دارند
- Portainer: یک رابط بصری برای مدیریت کانتینرهای داکر بدون نیاز به استفاده از ترمینال یا خط فرمان.
- Nextcloud: یک جایگزین با اولویت حریم خصوصی برای خدمات ذخیرهسازی ابری عمومی مانند Google Drive.
- Pi-hole: یک مسدودکننده تبلیغات و ردیاب در سطح شبکه. این برنامه در سطح DNS کار میکند.
- Jellyfin: یک سرور رسانهای برای پخش فیلمها، برنامهها و موسیقیهای خودتان. این برنامه مشابه نتفلیکس عمل میکند اما با مدیریت رسانههای BYOD با استفاده از فایلهای رسانهای خودتان.
- Vaultwarden: یک مدیر رمز عبور خودمیزبان که به عنوان یک جایگزین برای API Bitwarden عمل میکند.
- AdGuard Home: یک مسدودکننده تبلیغات محبوب دیگر که بر اساس DNS عمل میکند و دارای رمزگذاری داخلی است.
- Uptime Kuma: یک ابزار ساده برای نظارت بر وضعیت که به شما هشدار میدهد زمانی که خدمات یا برنامههای خودمیزبان شما دچار مشکل میشوند.
🛒 آیا به دنبال این محصول هستید؟
📌 منبع: TechRadar | 📅 1405/06/05
