نصب Docker و Docker Compose روی اوبونتو (روش رسمی)
برای نصب آخرین نسخهٔ پایدار Docker بهتر است از مخزن رسمی خود Docker استفاده کنید نه بستهٔ docker.io قدیمی اوبونتو. این راهنما نصب کامل همراه با Compose را قدمبهقدم انجام میدهد.
۱حذف بستههای قدیمی
اگر نسخهٔ قدیمی داکر نصب بوده، حذفش کنید (اگر چیزی نصب نبود خطای «not installed» طبیعی است).
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove -y $pkg; done۲افزودن مخزن رسمی Docker
کلید GPG و مخزن را اضافه کنید.
sudo apt-get update
sudo apt-get install -y 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
sudo apt-get update۳نصب Docker Engine و Compose
بستهٔ docker-compose-plugin دستور docker compose (با فاصله) را میدهد.
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
docker --version && docker compose version۴اجرا بدون sudo
کاربر را به گروه docker اضافه کنید و دوباره وارد شوید.
sudo usermod -aG docker $USER
newgrp docker
docker run --rm hello-worldعضویت در گروه docker تقریباً معادل دسترسی root است؛ فقط به کاربران مورد اعتماد بدهید.
۵محدود کردن اندازهٔ لاگ کانتینرها
بدون این تنظیم لاگ کانتینرها میتوانند دیسک را پر کنند.
sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
EOF
sudo systemctl restart docker۶هشدار مهم: داکر و فایروال
داکر خودش قوانین iptables میسازد و پورتهایی که با -p منتشر میکنید حتی با ufw هم از بیرون باز میمانند. برای دیتابیسها و سرویسهای داخلی همیشه به 127.0.0.1 متصل کنید.
# ناامن: از بیرون در دسترس
docker run -d -p 3306:3306 mysql
# امن: فقط روی خود سرور
docker run -d -p 127.0.0.1:3306:3306 mysqlدر تجربهٔ بسیاری از سرورها، دیتابیس با -p 3306:3306 به اینترنت باز و هک شده است.
۷بررسی و پاکسازی
وضعیت کانتینرها و فضای دیسک را ببینید و منابع بلااستفاده را پاک کنید.
docker ps -a
docker system df
docker system prune -fپرسشهای پرتکرار دربارهٔ نصب Docker و Docker Compose روی اوبونتو (روش رسمی)
تفاوت docker-compose و docker compose چیست؟
docker-compose (با خط تیره) نسخهٔ قدیمی پایتونی است و docker compose (با فاصله) پلاگین جدید و پشتیبانیشدهٔ خود Docker است. برای پروژههای جدید از نسخهٔ با فاصله استفاده کنید.