Как использовать основные команды Docker

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

Введение

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

Основные понятия Docker

Что такое Docker?

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

Ключевые понятия Docker

1. Контейнеры

Контейнеры — это лёгкие, автономные исполняемые пакеты, содержащие всё необходимое для запуска приложения:

  • Код
  • Среда выполнения
  • Системные инструменты
  • Системные библиотеки
  • Настройки
graph LR
    A[Код приложения] --> B[Контейнер]
    C[Зависимости] --> B
    D[Системные библиотеки] --> B
    E[Конфигурация] --> B

2. Образы

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

3. Dockerfile

Dockerfile — это текстовый документ, содержащий инструкции для сборки Docker образа. Он определяет среду, зависимости и конфигурацию приложения.

Пример Dockerfile:

FROM ubuntu:22.04
RUN apt-get update
RUN apt-get install -y python3
COPY . /app
WORKDIR /app
CMD ["python3", "app.py"]

4. Архитектура Docker

graph TB
    A[Клиент Docker] --> B[Дэмон Docker]
    B --> C[Среда выполнения контейнеров]
    B --> D[Репозиторий образов]
    B --> E[Хранилище образов]

5. Контейнеры против виртуальных машин

Характеристика Контейнеры Виртуальные машины
Использование ресурсов Легковесные Тяжеловесные
Время запуска Секунды Минуты
Уровень изоляции Уровень процессов Полный уровень ОС
Производительность Высокая Низкая

Преимущества Docker

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

Сценарии использования

  • Архитектура микросервисов
  • Непрерывная интеграция/непрерывная доставка (CI/CD)
  • Разработка облачных приложений
  • Упрощённое тестирование приложений

Начало работы с LabEx

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

Руководство по установке Docker

Предварительные условия

Перед установкой Docker убедитесь, что ваша система Ubuntu 22.04 соответствует следующим требованиям:

  • 64-битная операционная система
  • Версия ядра 3.10 или выше
  • Достаточные системные ресурсы

Способы установки

1. Установка с помощью репозитория

Шаг 1: Обновление индекса пакетов
sudo apt-get update
Шаг 2: Установка необходимых пакетов
sudo apt update
sudo apt-get install ca-certificates curl gnupg lsb-release
Шаг 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-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

2. Проверка установки

sudo docker --version
sudo docker run hello-world

Процесс установки

graph TD
    A[Обновить систему] --> B[Установить зависимости]
    B --> C[Добавить ключ GPG]
    C --> D[Настроить репозиторий]
    D --> E[Установить Docker]
    E --> F[Проверить установку]

Шаги после установки

1. Управление Docker от имени пользователя, не являющегося root

sudo usermod -aG docker $USER
newgrp docker

2. Настройка Docker для запуска при загрузке системы

sudo systemctl enable docker
sudo systemctl start docker

Варианты установки Docker

Метод Преимущества Недостатки
Репозиторий Легкие обновления Требуется подключение к интернету
Официальные пакеты Прямой контроль Ручные обновления
Скрипт установки Быстрая настройка Меньшая безопасность

Поиск решения распространённых проблем

  • Проверьте совместимость системы
  • Проверьте подключение к сети
  • Убедитесь в наличии достаточного места на диске
  • Регулярно обновляйте системные пакеты

Обучение Docker от LabEx

LabEx предоставляет интерактивные руководства по установке Docker и практические среды для обучения, чтобы разработчики быстро и эффективно освоили технологии контейнеризации.

Рекомендуемые системные требования

Компонент Минимальные требования
CPU 2 ядра
ОЗУ 4 ГБ
Диск 20 ГБ
ОС Ubuntu 22.04 LTS

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

Структура команд Docker

Команды Docker следуют стандартному синтаксису:

docker [команда] [опции] [аргументы]

Команды управления образами

1. Скачивание образов

docker pull ubuntu:latest
docker pull nginx:alpine

2. Список образов

docker images
docker image ls

3. Удаление образов

docker rmi ubuntu:latest
docker image rm nginx:alpine

Команды управления контейнерами

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

docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash

2. Список контейнеров

docker ps    ## Запущенные контейнеры
docker ps -a ## Все контейнеры

3. Запуск, остановка, перезапуск контейнеров

docker start web-server
docker stop web-server
docker restart web-server

4. Удаление контейнеров

docker rm web-server
docker container prune ## Удаление всех остановленных контейнеров

Команды взаимодействия с контейнерами

1. Выполнение команд внутри контейнера

docker exec -it web-server bash
docker exec web-server ls /var/www/html

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

docker logs web-server
docker logs -f web-server ## Отслеживание вывода логов

Рабочий процесс Docker

graph TD
    A[Скачивание образа] --> B[Создание контейнера]
    B --> C[Запуск контейнера]
    C --> D[Взаимодействие/Выполнение]
    D --> E[Остановка контейнера]
    E --> F[Удаление контейнера]

Расширенные команды Docker

1. Сборка пользовательских образов

docker build -t myapp:v1 .

2. Docker Volumes

docker volume create myvolume
docker run -v myvolume:/app nginx

3. Управление сетями

docker network create mynetwork
docker run --network mynetwork nginx

Общие категории команд Docker

Категория Назначение Пример команд
Управление образами Управление образами Docker pull, push, build
Управление контейнерами Управление контейнерами run, start, stop
Управление системой Информация о системе Docker info, version
Управление сетями Управление сетями network create
Управление томами Управление постоянными данными volume create

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

  • Используйте конкретные теги образов
  • Очищайте неиспользуемые ресурсы
  • Используйте Docker Compose для сложных конфигураций
  • Реализуйте многоэтапную сборку

Обучение Docker от LabEx

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

Полезные опции команд Docker

Опция Описание Пример
-d Отключенный режим docker run -d nginx
-it Интерактивная консоль docker run -it ubuntu
--name Имя контейнера docker run --name web nginx
-p Картирование портов docker run -p 8080:80 nginx

Резюме

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