Руководство по Docker: Установка и основные команды
Полное руководство по Docker: установка, основные команды (run, stop, rm, ps), управление образами, тома и основы сети на Linux-серверах.
Содержание
Руководство по Docker: Установка и основные команды
Docker — это платформа с открытым исходным кодом для запуска приложений в изолированных контейнерах. Она обеспечивает единообразную среду от разработки до производства. В этом руководстве рассматриваются установка Docker, основные команды и практические сценарии использования.
Что такое Docker?
Docker упаковывает приложения и их зависимости в переносимые контейнеры. В отличие от виртуальных машин:
- Использует ядро хост-ОС (намного легче)
- Запускается и останавливается за секунды
- Потребляет значительно меньше ресурсов
- Устраняет проблему «у меня работает»
Docker — краеугольный камень современной разработки и развёртывания ПО. На серверах REXE вы можете легко развёртывать приложения с помощью Docker.
Установка Docker
Debian/Ubuntu
# Удаление старых версий
sudo apt remove docker docker-engine docker.io containerd runc
# Установка зависимостей
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release -y
# Добавление GPG-ключа Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Добавление репозитория Docker
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
# Установка Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# Запуск и включение службы
sudo systemctl start docker
sudo systemctl enable docker
RHEL/CentOS/AlmaLinux
# Добавление репозитория Docker
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Установка Docker
sudo dnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
# Запуск службы
sudo systemctl start docker
sudo systemctl enable docker
Проверка установки
# Проверка версии Docker
docker --version
# Запуск тестового контейнера
sudo docker run hello-world
# Использование Docker без sudo
sudo usermod -aG docker $USER
newgrp docker
Основные команды Docker
Запуск контейнеров
# Простой запуск контейнера
docker run nginx
# Запуск в фоне (detached)
docker run -d nginx
# С перенаправлением портов
docker run -d -p 8080:80 nginx
# С именем
docker run -d --name web-server -p 8080:80 nginx
# С переменной окружения
docker run -d -e MYSQL_ROOT_PASSWORD=secret --name mysql mysql:8.0
# С монтированием тома
docker run -d -v /host/dir:/container/dir nginx
# Политика автоматического перезапуска
docker run -d --restart unless-stopped nginx
# Интерактивный терминал
docker run -it ubuntu bash
Управление контейнерами
# Список запущенных контейнеров
docker ps
# Список всех контейнеров (включая остановленные)
docker ps -a
# Остановить контейнер
docker stop имя_контейнера
# Запустить контейнер
docker start имя_контейнера
# Перезапустить контейнер
docker restart имя_контейнера
# Удалить контейнер (должен быть остановлен)
docker rm имя_контейнера
# Принудительно удалить запущенный контейнер
docker rm -f имя_контейнера
# Удалить все остановленные контейнеры
docker container prune
Мониторинг контейнеров
# Просмотр логов контейнера
docker logs имя_контейнера
# Следить за логами в реальном времени
docker logs -f имя_контейнера
# Последние 100 строк логов
docker logs --tail 100 имя_контейнера
# Использование ресурсов
docker stats
# Детали контейнера
docker inspect имя_контейнера
# Подключиться к оболочке контейнера
docker exec -it имя_контейнера bash
# Выполнить команду в контейнере
docker exec имя_контейнера ls /var/www
Управление образами
# Загрузить образ
docker pull nginx
docker pull nginx:1.25
docker pull ubuntu:22.04
# Список локальных образов
docker images
# Удалить образ
docker rmi nginx
# Удалить неиспользуемые образы
docker image prune
# Очистить все неиспользуемые ресурсы
docker system prune -a
Создание образов с 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:1.0 .
# Отправить на Docker Hub
docker tag myapp:1.0 username/myapp:1.0
docker push username/myapp:1.0
Управление томами
Тома обеспечивают сохранность данных даже после удаления контейнеров.
# Создать том
docker volume create database-data
# Список томов
docker volume ls
# Подключить том к контейнеру
docker run -d -v database-data:/var/lib/mysql mysql:8.0
# Bind mount (директория хоста)
docker run -d -v /root/data:/app/data nginx
# Удалить том
docker volume rm database-data
# Удалить неиспользуемые тома
docker volume prune
Основы сети
# Список сетей
docker network ls
# Создать пользовательскую сеть
docker network create app-network
# Подключить контейнеры к сети
docker run -d --network app-network --name web nginx
docker run -d --network app-network --name db mysql:8.0
# Контейнеры в одной сети могут обращаться друг к другу по имени
# Из контейнера web: ping db
# Детали сети
docker network inspect app-network
Практические примеры
Веб-сервер Nginx
docker run -d \
--name nginx-web \
-p 80:80 \
-v /var/www/html:/usr/share/nginx/html:ro \
--restart unless-stopped \
nginx:alpine
База данных MySQL
docker run -d \
--name mysql-db \
-e MYSQL_ROOT_PASSWORD=strong_password \
-e MYSQL_DATABASE=myapp \
-v mysql-data:/var/lib/mysql \
-p 3306:3306 \
--restart unless-stopped \
mysql:8.0
Для управления несколькими контейнерами используйте Docker Compose. Файл docker-compose.yml позволяет запустить все сервисы одной командой.
Заключение
Docker — незаменимый инструмент для современного развёртывания приложений. Освоив основы, переходите к Docker Compose для управления несколькими сервисами. На серверах REXE Docker позволяет запускать приложения изолированно, безопасно и переносимо.
Связанные статьи
Подключение к VDS по SSH: PuTTY, терминал и SSH-ключи
Пошаговое руководство по SSH-подключению к Linux VDS: PuTTY, терминал, аутентификация по ключу, правило фильтрации Path Panel и советы по безопасности.
Подключение к Windows VDS по RDP: полное руководство
Пошаговое руководство по RDP-подключению к Windows Server VDS: настройка, безопасность NLA, правило фильтрации Path Panel и устранение неполадок.
Смена ОС VDS-сервера: пошаговое руководство (Reinstall)
Смена операционной системы VDS через панель REXE: советы по резервному копированию, поддерживаемые дистрибутивы Linux и версии Windows Server.