Docker — платформа контейнеризации для сборки, доставки и запуска приложений в изолированных контейнерах.
📋 Требования
- Linux VPS с root или sudo
- Ubuntu 20.04+ / Debian 11+ (или CentOS 7+/RHEL 7+)
- Минимум 1 ГБ RAM (лучше 2 ГБ)
- Стабильный интернет
💡 Инфраструктура
Для сборок и I/O удобны быстрые диски — смотрите VPS NVMe.
⚠️ Перед установкой
- Система 64-bit
- Имеет смысл сделать резервные копии
- Установка обычно 5–10 минут
🔧 Ubuntu / Debian
Шаг 1: обновление
Bashsudo apt update sudo apt upgrade -y
Шаг 2: зависимости
Bash1sudo apt install -y \ 2 ca-certificates \ 3 curl \ 4 gnupg \ 5 lsb-release
Шаг 3: ключ GPG Docker
Bashsudo 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
Шаг 4: репозиторий
Bashecho \ "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
Шаг 5: установка Docker Engine
Bashsudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Шаг 6: проверка
Bashsudo docker --version sudo docker compose version
🔧 CentOS / RHEL
Bash1sudo yum update -y 2sudo yum install -y yum-utils 3sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 4sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 5sudo systemctl start docker 6sudo systemctl enable docker 7sudo docker --version 8sudo docker compose version
👤 Шаг 7: права пользователя
Чтобы не использовать sudo для каждой команды Docker:
Bashsudo usermod -aG docker $USER newgrp docker
Проверка:
Bashdocker run hello-world
🧪 Шаг 8: тест
Bashdocker run hello-world docker ps docker ps -a docker images
🐙 Docker Compose отдельно (если не вошёл в пакет)
Ubuntu/Debian:
Bashsudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version
📦 Основные команды
Образы: docker pull, docker images, docker rmi, docker image prune -a
Контейнеры: docker run, docker run -d, docker ps, docker stop, docker start, docker restart, docker rm, docker logs, docker exec -it … /bin/bash
Compose: docker compose up, docker compose up -d, docker compose down, docker compose logs, docker compose build
🔒 Безопасность daemon (опционально)
/etc/docker/daemon.json:
JSON1{ 2 "log-driver": "json-file", 3 "log-opts": { 4 "max-size": "10m", 5 "max-file": "3" 6 } 7}
Bashsudo systemctl restart docker
Пользователи в группе docker по сути имеют права root — добавляйте только доверенных; для паранойи изучите rootless Docker.
🔄 Обновление
Ubuntu/Debian: sudo apt update && sudo apt upgrade docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
CentOS/RHEL: sudo yum update docker-ce …
🗑️ Удаление
Ubuntu/Debian:
Bashsudo systemctl stop docker sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
❓ Проблемы
Cannot connect to the Docker daemon — sudo systemctl start docker, проверьте группу docker.
Permission denied — usermod -aG docker $USER, перелогин.
Медленно — df -h, docker system prune -a, free -h.
📝 Пример compose
YAML1version: '3.8' 2 3services: 4 web: 5 image: nginx:latest 6 ports: 7 - "80:80" 8 volumes: 9 - ./html:/usr/share/nginx/html 10 restart: unless-stopped
Bashmkdir mon-projet && cd mon-projet nano docker-compose.yml docker compose up -d docker ps
📞 Помощь
Поддержка Infrawire при ошибках установки.
Примечание: перед продакшеном разберитесь с базовыми понятиями образов и контейнеров.