Введение
Docker произвел революцию в разработке программного обеспечения, предоставив мощную платформу для контейнеризации. Этот учебник проведет вас через основные шаги развертывания вашего первого Docker-изображения, помогая разработчикам и ИТ-специалистам понять основные концепции и практическое применение Docker-контейнеров.
Основы Docker
Что такое Docker?
Docker — это платформа с открытым исходным кодом, предназначенная для автоматизации развертывания, масштабирования и управления приложениями с помощью технологии контейнеризации. Она позволяет разработчикам упаковывать приложение со всеми его зависимостями в стандартизированную единицу, называемую контейнером.
Ключевые понятия Docker
Контейнеры
Контейнер — это лёгкий, автономный, исполняемый пакет, включающий всё необходимое для запуска приложения: код, среду выполнения, системные инструменты, библиотеки и настройки.
graph TD
A[Код приложения] --> B[Контейнер]
C[Зависимости] --> B
D[Системные библиотеки] --> B
E[Среда выполнения] --> B
Docker-изображения
Docker-изображения — это шаблоны только для чтения, используемые для создания контейнеров. Они служат основой для создания контейнеров и могут храниться в репозиториях, таких как Docker Hub.
Архитектура Docker
| Компонент | Описание |
|---|---|
| Docker Client | Командная строка для взаимодействия с Docker |
| Docker Daemon | Фоновый сервис, управляющий объектами Docker |
| Docker Registry | Система хранения и распространения Docker-изображений |
Зачем использовать Docker?
- Согласованность в разных средах
- Лёгкое и быстрое развертывание
- Простое масштабирование
- Улучшенное использование ресурсов
- Упрощённое управление конфигурацией
Установка Docker на Ubuntu 22.04
Для установки Docker на Ubuntu используйте следующие команды:
## Обновить индекс пакетов
sudo apt update
## Установить зависимости
sudo apt install apt-transport-https ca-certificates curl software-properties-common
## Добавить официальный ключ GPG Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
## Настроить стабильный репозиторий
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
## Установить Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Проверка установки Docker
После установки проверьте, что Docker работает правильно:
## Проверить версию Docker
docker --version
## Запустить контейнер hello-world
sudo docker run hello-world
Рабочий процесс Docker
graph LR
A[Разработка] --> B[Сборка изображения]
B --> C[Загрузка в репозиторий]
C --> D[Получение изображения]
D --> E[Запуск контейнера]
Начало работы с LabEx
LabEx предоставляет интерактивные среды обучения Docker, которые помогают разработчикам эффективнее практиковаться и понимать технологии контейнеризации.
Настройка среды
Системные требования
Перед настройкой среды Docker убедитесь, что ваша система соответствует следующим требованиям:
| Требование | Спецификация |
|---|---|
| Операционная система | Ubuntu 22.04 LTS |
| ЦП | 64-битный процессор |
| ОЗУ | Минимально 4 ГБ |
| Хранилище | 20 ГБ свободного места на диске |
Подготовка системы
Обновление системных пакетов
sudo apt update
sudo apt upgrade -y
Установка необходимых зависимостей
sudo apt install -y \
ca-certificates \
curl \
gnupg \
lsb-release \
software-properties-common
Способы установки Docker
graph LR
A[Установка Docker] --> B[Установка через репозиторий]
A --> C[Установка из пакетов вручную]
A --> D[Установка с помощью скрипта]
Установка через репозиторий (рекомендуется)
Добавление официального ключа GPG Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Настройка репозитория
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 -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройка после установки
Добавление пользователя в группу Docker
sudo usermod -aG docker $USER
Настройка Docker для запуска при загрузке системы
sudo systemctl enable docker
sudo systemctl start docker
Проверка установки
Проверка версии Docker
docker --version
docker compose version
Запуск контейнера Hello World
sudo docker run hello-world
Настройка Docker Compose
Установка Docker Compose
sudo apt install docker-compose
Рекомендуемые инструменты
| Инструмент | Назначение |
|---|---|
| Docker Desktop | Графический интерфейс для управления Docker |
| Visual Studio Code | IDE с расширением Docker |
| Docker Hub | Репозиторий контейнерных образов |
Рекомендации по среде LabEx
LabEx предоставляет предварительно настроенные среды Docker, которые упрощают настройку и обучение, что облегчает новичкам знакомство с технологиями контейнеризации.
Поиск решения при возникновении проблем с установкой
Возможные проблемы
- Несовместимая архитектура системы
- Устаревшие системные пакеты
- Недостаточные права доступа
- Проблемы с подключением к сети
Рекомендованные решения
- Убедитесь, что система соответствует минимальным требованиям
- Регулярно обновляйте системные пакеты
- Проверьте подключение к интернету
- Проверьте права пользователя
- Обратитесь к официальной документации Docker
Развертывание первого контейнера
Понимание развертывания контейнеров
Рабочий процесс развертывания контейнеров
graph LR
A[Выбор образа] --> B[Загрузка образа]
B --> C[Создание контейнера]
C --> D[Запуск контейнера]
D --> E[Управление контейнером]
Загрузка Docker образов
Официальные образы Docker Hub
## Загрузка образа Ubuntu
docker pull ubuntu:latest
## Загрузка образа веб-сервера Nginx
docker pull nginx:latest
## Загрузка образа для разработки на Python
docker pull python:3.9
Запуск первого контейнера
Базовое выполнение контейнера
## Запуск контейнера Ubuntu
docker run -it ubuntu:latest /bin/bash
## Запуск веб-сервера Nginx
docker run -d -p 8080:80 nginx:latest
## Запуск интерактивного контейнера Python
docker run -it python:3.9 python
Команды управления контейнерами
| Команда | Описание |
|---|---|
docker ps |
Список запущенных контейнеров |
docker ps -a |
Список всех контейнеров |
docker start <container_id> |
Запуск остановленного контейнера |
docker stop <container_id> |
Остановка запущенного контейнера |
docker rm <container_id> |
Удаление контейнера |
Создание пользовательского контейнера
Пример Dockerfile
## Использование официального базового образа Python
FROM python:3.9
## Установка рабочей директории
WORKDIR /app
## Копирование файлов приложения
COPY . /app
## Установка зависимостей
RUN pip install flask
## Экспонирование порта
EXPOSE 5000
## Определение команды запуска
CMD ["python", "app.py"]
Сборка и запуск пользовательского образа
## Сборка Docker образа
docker build -t myapp:v1 .
## Запуск пользовательского контейнера
docker run -p 5000:5000 myapp:v1
Сетевое взаимодействие контейнеров
graph TD
A[Контейнер] -->|Отображение порта| B[Хост-сеть]
B -->|Экспонирование сервисов| C[Внешний доступ]
Пример отображения порта
## Отображение порта контейнера 80 на хост-порт 8080
docker run -d -p 8080:80 nginx:latest
Тома контейнеров
Управление томами
## Создание именованного тома
docker volume create mydata
## Подключение тома к контейнеру
docker run -v mydata:/data ubuntu:latest
Рекомендованные практики
- Использование официальных образов
- Минимизация размера образа
- Реализация многоэтапной сборки
- Использование конкретных тегов образа
- Избегание запуска контейнеров от имени root
Мониторинг контейнеров
## Просмотр логов контейнера
## Мониторинг использования ресурсов
## Просмотр подробностей о контейнере
Обучающая среда LabEx
LabEx предоставляет интерактивные лаборатории Docker, которые помогают разработчикам практиковать методы развертывания контейнеров в практической, направляемой среде.
Расширенные методы развертывания
| Метод | Описание |
|---|---|
| Docker Compose | Оркестрация многоконтейнерных приложений |
| Kubernetes | Масштабирование и управление контейнерами |
| Docker Swarm | Встроенное кластерирование Docker |
Резюме
Завершив это руководство, вы получили ценные знания о контейнеризации Docker, научились настраивать среду Docker и успешно развернули свой первый контейнер. Эти базовые навыки позволят вам использовать возможности Docker для более сложного развертывания и управления приложениями в реальных сценариях.



