Home » Как установить и использовать Docker на Ubuntu 24 — Полное руководство
Как установить и использовать Docker на Ubuntu 24 — Полное руководство

Как установить и использовать Docker на Ubuntu 24 — Полное руководство

Рано или поздно каждый системный администратор и разработчик сталкивается с задачей развертывания приложений на серверах. И тут на помощь приходит Docker — технология контейнеризации, которая кардинально изменила подход к управлению инфраструктурой. Если вы устали от “а у меня на машине работает” и хотите создавать предсказуемую среду выполнения, то эта статья для вас.

Мы разберем установку Docker на Ubuntu 24 от А до Я, покажем практические примеры использования и поделимся лайфхаками, которые сэкономят вам часы отладки. Готовы погрузиться в мир контейнеров? Поехали!

Что такое Docker и зачем он нужен?

Docker — это платформа для разработки, доставки и запуска приложений в контейнерах. Если объяснять простыми словами, то контейнер — это легковесная виртуальная машина, которая содержит все необходимые компоненты для работы приложения: код, runtime, системные инструменты, библиотеки и настройки.

Основные преимущества Docker:

  • Изоляция процессов и ресурсов
  • Быстрое развертывание и масштабирование
  • Единообразная среда выполнения
  • Эффективное использование системных ресурсов
  • Простота управления зависимостями

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

Перед установкой убедитесь, что у вас есть VPS или выделенный сервер с Ubuntu 24. Приступим к пошаговой установке:

Шаг 1: Обновление системы

sudo apt update
sudo apt upgrade -y

Шаг 2: Установка необходимых пакетов

sudo apt install apt-transport-https ca-certificates curl software-properties-common -y

Шаг 3: Добавление официального GPG ключа Docker

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Шаг 4: Добавление репозитория Docker

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

Шаг 5: Установка Docker Engine

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Шаг 6: Проверка установки

sudo docker run hello-world

Если вы видите сообщение “Hello from Docker!”, значит установка прошла успешно!

Настройка Docker для удобной работы

Добавление пользователя в группу docker

Чтобы не писать sudo перед каждой командой Docker, добавьте текущего пользователя в группу docker:

sudo usermod -aG docker $USER
newgrp docker

Настройка автозапуска Docker

sudo systemctl enable docker
sudo systemctl start docker

Основные команды Docker

Вот базовый набор команд, которые вам понадобятся для ежедневной работы:

# Просмотр информации о Docker
docker info

# Просмотр версии
docker version

# Поиск образов
docker search nginx

# Скачивание образа
docker pull nginx

# Просмотр локальных образов
docker images

# Запуск контейнера
docker run -d -p 80:80 --name my-nginx nginx

# Просмотр запущенных контейнеров
docker ps

# Просмотр всех контейнеров
docker ps -a

# Остановка контейнера
docker stop my-nginx

# Удаление контейнера
docker rm my-nginx

# Удаление образа
docker rmi nginx

Практические примеры использования

Пример 1: Веб-сервер Nginx

# Запуск Nginx с маппингом портов
docker run -d -p 8080:80 --name web-server nginx

# Проверка работы
curl http://localhost:8080

Пример 2: База данных MySQL

# Запуск MySQL с переменными окружения
docker run -d \
  --name mysql-db \
  -e MYSQL_ROOT_PASSWORD=mypassword \
  -e MYSQL_DATABASE=testdb \
  -p 3306:3306 \
  mysql:8.0

# Подключение к базе данных
docker exec -it mysql-db mysql -u root -p

Пример 3: Создание собственного образа

Создайте файл Dockerfile:

# Dockerfile
FROM ubuntu:24.04

RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*

COPY app.py /app/
WORKDIR /app

CMD ["python3", "app.py"]

Соберите и запустите образ:

docker build -t my-python-app .
docker run -d --name python-container my-python-app

Docker Compose для управления несколькими контейнерами

Для сложных приложений, состоящих из нескольких сервисов, используйте Docker Compose. Создайте файл docker-compose.yml:

version: '3.8'

services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    depends_on:
      - app
    
  app:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
    environment:
      - DATABASE_URL=mysql://root:password@db:3306/myapp
      
  db:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=myapp
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:

Запуск и управление:

# Запуск всех сервисов
docker compose up -d

# Просмотр логов
docker compose logs

# Остановка сервисов
docker compose down

Управление ресурсами и мониторинг

Ограничение ресурсов

# Ограничение памяти и CPU
docker run -d --memory=512m --cpus="1.0" nginx

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

# Информация о контейнере
docker inspect container_name

Работа с логами

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

# Отслеживание логов в реальном времени
docker logs -f container_name

# Ограничение размера логов
docker run -d --log-opt max-size=10m --log-opt max-file=3 nginx

Сравнение Docker с альтернативами

Решение Преимущества Недостатки Использование
Docker Простота использования, большая экосистема Демон архитектура, проблемы с безопасностью Разработка, CI/CD, микросервисы
Podman Безопасность, без демона Меньшая экосистема, сложнее в освоении Безопасные среды, rootless контейнеры
LXC/LXD Системные контейнеры, производительность Сложность настройки, меньше образов Виртуализация на системном уровне
containerd Низкоуровневый, стабильный Сложный API, нет высокоуровневых инструментов Kubernetes, встроенные системы

Безопасность и лучшие практики

Основные принципы безопасности:

  • Используйте официальные образы из Docker Hub
  • Регулярно обновляйте образы
  • Не запускайте контейнеры от root пользователя
  • Используйте multi-stage builds для уменьшения размера образов
  • Сканируйте образы на уязвимости

Пример безопасного Dockerfile:

# Multi-stage build
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

FROM node:18-alpine AS runtime
RUN addgroup -g 1001 -S nodejs
RUN adduser -S nextjs -u 1001

COPY --from=builder /app/node_modules ./node_modules
COPY . .

USER nextjs
EXPOSE 3000
CMD ["node", "server.js"]

Автоматизация и интеграция

Использование с CI/CD

Пример GitLab CI конфигурации:

# .gitlab-ci.yml
build:
  stage: build
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

deploy:
  stage: deploy
  script:
    - docker pull $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
    - docker stop myapp || true
    - docker rm myapp || true
    - docker run -d --name myapp -p 80:80 $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

Интеграция с системами мониторинга

Пример настройки Prometheus для мониторинга Docker:

# docker-compose.yml для мониторинга
version: '3.8'

services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      
  cadvisor:
    image: gcr.io/cadvisor/cadvisor:latest
    ports:
      - "8080:8080"
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro

Полезные инструменты и расширения

Популярные инструменты для работы с Docker:

  • Docker Compose — управление многоконтейнерными приложениями
  • Docker Bench Security — проверка безопасности Docker
  • Dive — анализ слоев Docker образов
  • LazyDocker — TUI для управления Docker
  • Portainer — веб-интерфейс для Docker

Интересные факты и нестандартные применения

Docker можно использовать не только для веб-приложений. Вот несколько креативных примеров:

  • Песочница для тестирования — изолированная среда для экспериментов
  • Портабельная среда разработки — одинаковые условия для всей команды
  • Запуск GUI приложений — используя X11 forwarding
  • Миграция legacy приложений — обертка для старых систем
  • Научные вычисления — воспроизводимые исследования

Пример запуска GUI приложения:

docker run -it --rm \
  -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  firefox

Оптимизация производительности

Лучшие практики для ускорения работы:

  • Используйте .dockerignore для исключения ненужных файлов
  • Кэшируйте слои, размещая часто изменяемые инструкции в конце
  • Используйте alpine образы для уменьшения размера
  • Настройте Docker daemon для оптимальной производительности

Оптимизация daemon.json:

# /etc/docker/daemon.json
{
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "default-ulimits": {
    "nofile": {
      "Name": "nofile",
      "Hard": 64000,
      "Soft": 64000
    }
  }
}

Решение типичных проблем

Проблема: Недостаток места на диске

# Очистка неиспользуемых ресурсов
docker system prune -a

# Удаление неиспользуемых образов
docker image prune

# Удаление неиспользуемых volume
docker volume prune

Проблема: Контейнер не может подключиться к другому сервису

# Проверка сетевых настроек
docker network ls
docker network inspect bridge

# Создание пользовательской сети
docker network create my-network
docker run --network my-network nginx

Статистика и тенденции

По данным Stack Overflow Developer Survey 2024, Docker используют более 69% разработчиков, что делает его одним из самых популярных инструментов. Рост использования контейнеризации составляет около 30% в год, что говорит о зрелости технологии.

Интересный факт: Docker Inc. была оценена в $1.3 миллиарда долларов, а экосистема Docker Hub содержит более 13 миллионов образов.

Заключение и рекомендации

Docker кардинально изменил подход к развертыванию приложений и стал стандартом де-факто в современной разработке. Освоив эту технологию, вы получите:

  • Упрощенное управление зависимостями
  • Быстрое развертывание и масштабирование
  • Улучшенную портабельность приложений
  • Эффективное использование ресурсов сервера

Рекомендую начать с простых контейнеров, постепенно переходя к более сложным сценариям использования. Помните о безопасности и следуйте лучшим практикам. Docker — это не просто инструмент, это новая философия разработки и эксплуатации приложений.

Для продуктивной работы с Docker вам понадобится надежная серверная инфраструктура. Выбирайте проверенные решения и не экономьте на качестве хостинга — это основа стабильной работы ваших контейнеризованных приложений.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked