Установка Docker и Docker Compose
Требования
Linux (Ubuntu 22.04+):
- 64-bit
- Kernel 5.10+
- 2+ ГБ RAM
macOS:
- macOS 12+
- Docker Desktop
Windows:
- Windows 10/11 Pro/Enterprise
- WSL2
- Docker Desktop
Установка на Ubuntu
Способ 1 — официальный скрипт (быстро)
curl -fsSL https://get.docker.com | sh
Что делает: скачивает и запускает официальный установочный скрипт.
Способ 2 — вручную (по шагам)
# 1. Утилиты
sudo apt update
sudo apt install -y ca-certificates curl gnupg
# 2. 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
# 3. Репозиторий
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. Установка
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Проверка
docker --version
# Docker version 27.0.0
docker compose version
# Docker Compose version v2.28.0
sudo systemctl status docker
# active (running)
Группа docker
Проблема: без sudo команды Docker не работают.
docker ps
# permission denied
Решение: добавь себя в группу docker.
sudo usermod -aG docker $USER
newgrp docker
Или перелогинься.
Проверка:
docker ps
# CONTAINER ID IMAGE ... (пусто, но работает)
⚠️ Группа docker = root-права. Член группы может монтировать файлы хоста в контейнеры и получать root-доступ. Доверяй только своим пользователям.
Автозапуск
Docker должен стартовать при загрузке:
sudo systemctl enable docker
sudo systemctl enable containerd
Проверка:
sudo systemctl is-enabled docker
# enabled
Установка на macOS
1. Скачай Docker Desktop: docker.com/products/docker-desktop
2. Установи DMG.
3. Запусти Docker Desktop. В трее появится иконка.
4. Проверь:
docker --version
docker compose version
Docker Desktop для Mac — включает Docker Engine, Compose, Kubernetes.
Альтернатива — Colima (open-source, через brew):
brew install colima
colima start
Легче, чем Docker Desktop, без GUI.
Установка на Windows
1. Установи WSL2:
wsl --install
2. Установи Docker Desktop: docker.com/products/docker-desktop
3. Включи интеграцию с WSL2 в настройках Docker Desktop.
4. Внутри WSL2 Docker работает как на Linux.
Первая проверка
docker run hello-world
Ожидаемый вывод:
Hello from Docker!
This message shows that your installation appears to be working correctly.
Что произошло:
- Docker проверил наличие образа
hello-worldлокально - Не нашёл → скачал из Docker Hub
- Создал контейнер
- Запустил → вывод → завершил
Проверь контейнеры:
docker ps -a
# CONTAINER ID IMAGE ... hello-world
-a — включая остановленные.
Удали:
docker rm <container_id>
Полезные настройки
Настройки демона
/etc/docker/daemon.json:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"default-address-pools": [
{"base": "172.30.0.0/16", "size": 24}
]
}
Что даёт:
- Логи контейнеров — макс 10 МБ × 3 файла
- Свой пул подсетей (если 172.17.0.0/16 занят)
Применить:
sudo systemctl restart docker
Частые проблемы
permission denied
docker: permission denied while trying to connect to the Docker daemon socket
Решение: добавить пользователя в группу docker (см. выше).
Порт занят
docker: Error starting userland proxy: bind: address already in use
Причина: другой процесс слушает порт. Проверь:
sudo ss -tlnp | grep :80
Решение: поменять порт в конфиге контейнера.
Не хватает места
no space left on device
Проверь:
docker system df
Очисти:
docker system prune -a
⚠️ Удаляет ВСЁ, что не используется. Включая образы.
Docker не стартует
docker: Cannot connect to the Docker daemon
Проверь:
sudo systemctl status docker
sudo journalctl -u docker -n 50
Перезапусти:
sudo systemctl restart docker
Проверка установки
Финальный чек-лист:
docker --version # OK
docker compose version # OK
docker run hello-world # Hello from Docker!
docker ps # без sudo
sudo systemctl is-enabled docker # enabled
Итог
На Ubuntu:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker
Проверь: docker --version и docker run hello-world.
Дальше — образы и контейнеры.