Как создать контейнер Docker в Linux

DockerBeginner
Практиковаться сейчас

Введение

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

  1. Создание: Создание образа Docker из Dockerfile.
  2. Доставка: Хранение образа Docker в реестре, таком как Docker Hub.
  3. Запуск: Создание и запуск контейнера Docker из образа.

Сценарии использования контейнеров Docker

  • Микросервисы: Контейнеры Docker хорошо подходят для создания и развертывания приложений на основе микросервисов.
  • Непрерывная интеграция и непрерывная доставка: Контейнеры Docker можно использовать для автоматизации сборки, тестирования и развертывания приложений.
  • Облачное хостинг: Контейнеры Docker легко развертываются и масштабируются в облачных платформах, таких как AWS, Azure и Google Cloud.
  • Машинное обучение и наука о данных: Контейнеры Docker можно использовать для упаковки и развертывания моделей машинного обучения и потоков обработки данных.

Установка и настройка Docker на Linux

Установка Docker на Ubuntu 22.04

  1. Обновите индекс пакетов:
sudo apt-get update
  1. Установите необходимые пакеты, чтобы разрешить apt использовать репозиторий через HTTPS:
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
  1. Добавьте официальный ключ 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
  1. Настройте репозиторий 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
  1. Установите Docker Engine, containerd и Docker Compose:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Настройка Docker

  1. Проверьте установку Docker:
sudo docker run hello-world
  1. Добавьте своего пользователя в группу Docker, чтобы запускать команды Docker без sudo:
sudo usermod -aG docker $USER
  1. Настройте Docker на автоматический запуск при загрузке системы:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
  1. (Необязательно) Настройте Docker для использования другого драйвера хранения:
sudo vi /etc/docker/daemon.json

Добавьте следующую конфигурацию и сохраните файл:

{
  "storage-driver": "overlay2"
}
  1. Перезапустите службу Docker:
sudo systemctl restart docker

Установка Docker Compose

  1. Скачайте последнюю версию 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
  1. Сделайте исполняемый файл:
sudo chmod +x /usr/local/bin/docker-compose
  1. Проверьте установку Docker Compose:
docker-compose --version

Создание и запуск контейнеров Docker

Создание образов Docker

  1. Создайте новую директорию для вашего проекта:
mkdir my-docker-project
cd my-docker-project
  1. Создайте файл Dockerfile в директории проекта:
touch Dockerfile
  1. Откройте 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;"]
  1. Создайте файл конфигурации Nginx по умолчанию default.conf:
server {
    listen 80;
    server_name example.com;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}
  1. Соберите образ Docker:
docker build -t my-nginx-app .

Запуск контейнеров Docker

  1. Запустите контейнер Docker:
docker run -d --name my-nginx-app -p 80:80 my-nginx-app
  1. Проверьте, что контейнер работает:
docker ps
  1. Доступ к веб-серверу Nginx, запущенному в контейнере:
curl http://localhost

Управление контейнерами Docker

  1. Остановите работающий контейнер:
docker stop my-nginx-app
  1. Запустите остановленный контейнер:
docker start my-nginx-app
  1. Удалите контейнер:
docker rm my-nginx-app
  1. Удалите образ Docker:
docker rmi my-nginx-app

Docker Compose

  1. Создайте файл docker-compose.yml:
version: '3'
services:
  web:
    build: .
    ports:
     - "80:80"
  1. Соберите и запустите приложение Docker Compose:
docker-compose up -d
  1. Остановите и удалите приложение Docker Compose:
docker-compose down

Резюме

По завершении этого руководства вы получите глубокое понимание Docker и его возможностей, а также практические навыки создания, управления и запуска контейнеров Docker на Linux-системе. Эти знания позволят вам оптимизировать развертывание приложений, повысить масштабируемость и улучшить ваш общий рабочий процесс DevOps.