Как развернуть первый Docker образ

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

Введение

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?

  1. Согласованность в разных средах
  2. Лёгкое и быстрое развертывание
  3. Простое масштабирование
  4. Улучшенное использование ресурсов
  5. Упрощённое управление конфигурацией

Установка 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, которые упрощают настройку и обучение, что облегчает новичкам знакомство с технологиями контейнеризации.

Поиск решения при возникновении проблем с установкой

Возможные проблемы

  • Несовместимая архитектура системы
  • Устаревшие системные пакеты
  • Недостаточные права доступа
  • Проблемы с подключением к сети

Рекомендованные решения

  1. Убедитесь, что система соответствует минимальным требованиям
  2. Регулярно обновляйте системные пакеты
  3. Проверьте подключение к интернету
  4. Проверьте права пользователя
  5. Обратитесь к официальной документации 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

Рекомендованные практики

  1. Использование официальных образов
  2. Минимизация размера образа
  3. Реализация многоэтапной сборки
  4. Использование конкретных тегов образа
  5. Избегание запуска контейнеров от имени root

Мониторинг контейнеров

## Просмотр логов контейнера

## Мониторинг использования ресурсов

## Просмотр подробностей о контейнере

Обучающая среда LabEx

LabEx предоставляет интерактивные лаборатории Docker, которые помогают разработчикам практиковать методы развертывания контейнеров в практической, направляемой среде.

Расширенные методы развертывания

Метод Описание
Docker Compose Оркестрация многоконтейнерных приложений
Kubernetes Масштабирование и управление контейнерами
Docker Swarm Встроенное кластерирование Docker

Резюме

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