Введение
Docker — это мощная платформа контейнеризации, которая произвела революцию в способе, которым разработчики и ИТ-специалисты управляют и развертывают приложения. В этом руководстве мы проведем вас через процесс создания контейнера Docker на Linux-системе, от установки и настройки Docker до создания и запуска собственных пользовательских контейнеров.
Понимание контейнеров Docker
Docker — это популярная платформа с открытым исходным кодом, которая позволяет разработчикам создавать, развертывать и запускать приложения в контейнерной среде. Контейнеры — это лёгкие, автономные и исполняемые программные пакеты, включающие всё необходимое для запуска приложения, включая код, среду выполнения, системные инструменты и библиотеки.
Что такое контейнер Docker?
Контейнер Docker — это стандартизированная единица программного обеспечения, которая упаковывает код и все его зависимости, чтобы приложение быстро и надёжно работало в любой вычислительной среде. Контейнеры создаются из образов Docker, которые являются чертежами для создания контейнеров. Контейнеры Docker изолированы друг от друга и от операционной системы хоста, обеспечивая согласованную и предсказуемую среду выполнения.
Преимущества контейнеров Docker
- Переносимость: Контейнеры Docker могут работать на любом компьютере с установленным Docker, независимо от базовой инфраструктуры или операционной системы.
- Согласованность: Контейнеры Docker гарантируют, что приложение будет работать одинаково независимо от среды.
- Эффективность: Контейнеры Docker лёгкие и используют меньше ресурсов, чем виртуальные машины, так как они используют ядро операционной системы хоста.
- Масштабируемость: Контейнеры Docker легко масштабируются вверх или вниз, что упрощает управление и развертывание приложений.
- Изоляция: Контейнеры Docker изолированы друг от друга и от операционной системы хоста, что повышает безопасность и стабильность.
Архитектура контейнера Docker
graph TD
A[Хост Docker] --> B[Двигатель Docker]
B --> C[Образы Docker]
B --> D[Контейнеры Docker]
D --> E[Приложение]
D --> F[Библиотеки]
D --> G[Системные инструменты]
Жизненный цикл контейнера Docker
- Создание: Создание образа Docker из Dockerfile.
- Доставка: Хранение образа Docker в реестре, таком как Docker Hub.
- Запуск: Создание и запуск контейнера Docker из образа.
Сценарии использования контейнеров Docker
- Микросервисы: Контейнеры Docker хорошо подходят для создания и развертывания приложений на основе микросервисов.
- Непрерывная интеграция и непрерывная доставка: Контейнеры Docker можно использовать для автоматизации сборки, тестирования и развертывания приложений.
- Облачное хостинг: Контейнеры Docker легко развертываются и масштабируются в облачных платформах, таких как AWS, Azure и Google Cloud.
- Машинное обучение и наука о данных: Контейнеры Docker можно использовать для упаковки и развертывания моделей машинного обучения и потоков обработки данных.
Установка и настройка Docker на Linux
Установка Docker на Ubuntu 22.04
- Обновите индекс пакетов:
sudo apt-get update
- Установите необходимые пакеты, чтобы разрешить
aptиспользовать репозиторий через HTTPS:
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
- Добавьте официальный ключ 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 Engine, containerd и Docker Compose:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Настройка Docker
- Проверьте установку Docker:
sudo docker run hello-world
- Добавьте своего пользователя в группу Docker, чтобы запускать команды Docker без
sudo:
sudo usermod -aG docker $USER
- Настройте Docker на автоматический запуск при загрузке системы:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
- (Необязательно) Настройте Docker для использования другого драйвера хранения:
sudo vi /etc/docker/daemon.json
Добавьте следующую конфигурацию и сохраните файл:
{
"storage-driver": "overlay2"
}
- Перезапустите службу Docker:
sudo systemctl restart docker
Установка Docker Compose
- Скачайте последнюю версию Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Сделайте исполняемый файл:
sudo chmod +x /usr/local/bin/docker-compose
- Проверьте установку Docker Compose:
docker-compose --version
Создание и запуск контейнеров Docker
Создание образов Docker
- Создайте новую директорию для вашего проекта:
mkdir my-docker-project
cd my-docker-project
- Создайте файл
Dockerfileв директории проекта:
touch Dockerfile
- Откройте
Dockerfileи добавьте следующее содержимое:
## Используйте официальный образ Ubuntu 22.04 в качестве базового
FROM ubuntu:22.04
## Обновите индекс пакетов и установите необходимые пакеты
RUN apt-get update && apt-get install -y \
nginx \
curl \
&& rm -rf /var/lib/apt/lists/*
## Скопируйте файл конфигурации по умолчанию Nginx
COPY default.conf /etc/nginx/conf.d/
## Отобразите порт 80 для Nginx
EXPOSE 80
## Запустите Nginx при запуске контейнера
CMD ["nginx", "-g", "daemon off;"]
- Создайте файл конфигурации Nginx по умолчанию
default.conf:
server {
listen 80;
server_name example.com;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
- Соберите образ Docker:
docker build -t my-nginx-app .
Запуск контейнеров Docker
- Запустите контейнер Docker:
docker run -d --name my-nginx-app -p 80:80 my-nginx-app
- Проверьте, что контейнер работает:
docker ps
- Доступ к веб-серверу Nginx, запущенному в контейнере:
curl http://localhost
Управление контейнерами Docker
- Остановите работающий контейнер:
docker stop my-nginx-app
- Запустите остановленный контейнер:
docker start my-nginx-app
- Удалите контейнер:
docker rm my-nginx-app
- Удалите образ Docker:
docker rmi my-nginx-app
Docker Compose
- Создайте файл
docker-compose.yml:
version: '3'
services:
web:
build: .
ports:
- "80:80"
- Соберите и запустите приложение Docker Compose:
docker-compose up -d
- Остановите и удалите приложение Docker Compose:
docker-compose down
Резюме
По завершении этого руководства вы получите глубокое понимание Docker и его возможностей, а также практические навыки создания, управления и запуска контейнеров Docker на Linux-системе. Эти знания позволят вам оптимизировать развертывание приложений, повысить масштабируемость и улучшить ваш общий рабочий процесс DevOps.



