Введение
Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнеры позволяют упаковать приложение со всеми зависимостями и запускать его в любой среде одинаково. Docker Compose — инструмент для запуска многоконтейнерных приложений с помощью одного YAML-файла.
В этом руководстве мы установим Docker и Docker Compose на Ubuntu и рассмотрим основные команды.
Установка Docker
Шаг 1: Удаление старых версий
sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null || trueШаг 2: Установка зависимостей
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-releaseШаг 3: Добавление GPG-ключа Docker
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Шаг 4: Добавление репозитория
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Шаг 5: Установка Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginШаг 6: Проверка установки
sudo docker run hello-worldЕсли вы видите сообщение «Hello from Docker!», установка прошла успешно.
Шаг 7: Запуск Docker без sudo
sudo usermod -aG docker $USER
newgrp dockerПосле этого выйдите и войдите заново, чтобы изменения вступили в силу.
Основные команды Docker
Управление контейнерами
# Запуск контейнера
docker run -d --name myapp -p 8080:80 nginx
# Список запущенных контейнеров
docker ps
# Список всех контейнеров
docker ps -a
# Остановка контейнера
docker stop myapp
# Запуск остановленного контейнера
docker start myapp
# Удаление контейнера
docker rm myapp
# Логи контейнера
docker logs myapp
# Вход в контейнер
docker exec -it myapp bashУправление образами
# Скачать образ
docker pull ubuntu:22.04
# Список образов
docker images
# Удалить образ
docker rmi nginx
# Очистка неиспользуемых образов
docker image prune -aСоздание собственного образа
Dockerfile
Создайте файл Dockerfile:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]Сборка и запуск
# Сборка образа
docker build -t myapp:latest .
# Запуск
docker run -d -p 3000:3000 myapp:latestDocker Compose
Docker Compose устанавливается автоматически как плагин Docker. Проверьте:
docker compose versionПример: Веб-приложение + База данных
Создайте файл docker-compose.yml:
version: '3.8'
services:
web:
```bash
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
restart: unless-stopped
```bash
db:
```bash
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: securepassword
MYSQL_DATABASE: myapp
MYSQL_USER: appuser
MYSQL_PASSWORD: apppassword
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
```bash
phpmyadmin:
```bash
image: phpmyadmin:latest
ports:
- "8080:80"
environment:
PMA_HOST: db
PMA_USER: root
PMA_PASSWORD: securepassword
depends_on:
- db
restart: unless-stopped
```bash
volumes:
db_data:Команды Docker Compose
# Запуск всех сервисов
docker compose up -d
# Остановка
docker compose down
# Просмотр логов
docker compose logs -f
# Перезапуск одного сервиса
docker compose restart web
# Пересборка и запуск
docker compose up -d --buildПример: WordPress + MySQL
version: '3.8'
services:
wordpress:
```bash
image: wordpress:latest
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppassword
WORDPRESS_DB_NAME: wordpress
volumes:
- wp_data:/var/www/html
restart: unless-stopped
```bash
db:
```bash
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppassword
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
```bash
volumes:
wp_data:
db_data:
bash
docker compose up -dWordPress будет доступен на http://your_server_ip.
Полезные советы
Автоматический запуск Docker при старте системы
sudo systemctl enable dockerОчистка неиспользуемых ресурсов
# Удаление остановленных контейнеров, неиспользуемых сетей и образов
docker system prune -a
# Проверка занятого места
docker system dfОграничение ресурсов контейнера
docker run -d --name myapp \
--memory="512m" \
--cpus="1.0" \
-p 8080:80 nginxЗаключение
Docker и Docker Compose значительно упрощают развёртывание и управление приложениями. Контейнеризация обеспечивает изоляцию, воспроизводимость и простоту масштабирования. С помощью Docker вы можете быстро поднять любой стек технологий — от простого веб-сервера до сложной микросервисной архитектуры.
🐳 Совет: Для работы с Docker рекомендуем VPS с минимум 4 ГБ RAM и NVMe-дисками для быстрой работы контейнеров. Выбрать VPS для Docker →