Эффективное использование Docker CLI

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

Введение

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

Основы Docker CLI

Что такое Docker CLI?

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

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

Перед использованием Docker CLI убедитесь, что Docker установлен на вашей системе Ubuntu 22.04:

## Обновить индекс пакетов
sudo apt update

## Установить Docker
sudo apt install docker.io

## Проверить установку
docker --version

Базовая структура Docker CLI

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

docker <объект> <команда> <опции>

Категории команд

Категория Назначение
Команды управления Управление объектами Docker
Команды с образами Скачивание, сборка и управление образами
Команды с контейнерами Создание, запуск и управление контейнерами
Команды с сетями Настройка сетей Docker
Команды с томами Управление постоянным хранилищем данных

Аутентификация и разрешения

graph TD
    A[Пользователь] --> B{Docker CLI}
    B --> |Требуются права sudo| C[Права администратора]
    B --> |Группа пользователей| D[Доступ в группе Docker]

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

## Добавить текущего пользователя в группу docker
sudo usermod -aG docker $USER

## Перезапустить сеанс
newgrp docker

Настройка Docker CLI

Файлы конфигурации обычно находятся в:

  • /etc/docker/daemon.json (для всей системы)
  • ~/.docker/config.json (для конкретного пользователя)

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

  1. Дэмон Docker: Фоновый сервис, управляющий объектами Docker
  2. Клиент Docker: Инструмент командной строки для взаимодействия с демоном
  3. Объекты Docker: Образы, контейнеры, сети, тома

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

Общие команды Docker

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

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

## Скачать образ из Docker Hub
docker pull ubuntu:latest
docker pull nginx:1.21

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

## Список всех локальных образов
docker images
docker image ls

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

## Сборка образа из Dockerfile
docker build -t myapp:v1 .

Операции с контейнерами

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

## Запустить новый контейнер
docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash

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

Команда Описание Пример
docker ps Список запущенных контейнеров docker ps
docker ps -a Список всех контейнеров docker ps -a
docker start Запустить остановленный контейнер docker start web-server
docker stop Остановить запущенный контейнер docker stop web-server
docker rm Удалить контейнер docker rm web-server

Команды работы с сетями

graph TD
    A[Команды Docker для работы с сетями]
    A --> B[Создать сеть]
    A --> C[Список сетей]
    A --> D[Просмотреть сеть]

Операции с сетями

## Создать пользовательскую сеть
docker network create mynetwork

## Список сетей
docker network ls

## Подключить контейнер к сети
docker network connect mynetwork web-server

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

## Создать том
docker volume create mydata

## Список томов
docker volume ls

## Подмонтировать том к контейнеру
docker run -v mydata:/app nginx

Отладка и проверка

## Просмотреть логи контейнера
docker logs web-server

## Выполнить команду внутри запущенного контейнера
docker exec -it web-server bash

## Просмотреть подробности о контейнере
docker inspect web-server

Дополнительные команды

Очистка

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

## Удалить все остановленные контейнеры
docker container prune

Рекомендации

  1. Всегда используйте конкретные теги образов
  2. Удаляйте ненужные контейнеры и образы
  3. Используйте тома для сохранения данных
  4. Используйте изоляцию сетей

LabEx рекомендует освоить эти общие команды Docker CLI для эффективного управления контейнерными средами.

Шаблоны рабочих процессов CLI

Рабочий процесс разработки

graph TD
    A[Разработка кода] --> B[Сборка Docker образа]
    B --> C[Тестирование контейнера]
    C --> D[Загрузка в реестр]
    D --> E[Развертывание контейнера]

Типичный цикл разработки

## Клонировать проект
git clone https://github.com/example/project

## Создать Dockerfile
touch Dockerfile

## Собрать образ
docker build -t myapp:dev .

## Запустить контейнер для тестирования
docker run -d --name test-container myapp:dev

Рабочий процесс непрерывной интеграции

Сборка и тестирование

## Сборка образа с аргументами сборки
docker build --build-arg ENV=development -t myapp:ci .

## Запуск автоматических тестов
docker run --rm myapp:ci npm test

Управление жизненным циклом контейнера

Этапы рабочего процесса

Этап Команда Docker Назначение
Сборка docker build Создание образа
Тестирование docker run Валидация контейнера
Загрузка docker push Обмен образом
Развертывание docker run Запуск в продакшене

Развертывание нескольких контейнеров

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

## Определение сервисов в docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "8000:80"
database:
image: postgres:latest

## Запуск многоконтейнерной среды
docker-compose up -d

Шаблон микросервисов

graph TD
    A[Сервис API] --> B[Сервис базы данных]
    A --> C[Сервис кэша]
    A --> D[Сервис аутентификации]

Управление сервисами

## Создание сети для микросервисов
docker network create microservices-net

## Запуск сервисов с подключением к сети
docker run -d --name api --network microservices-net myapi
docker run -d --name database --network microservices-net mydb

Рабочий процесс отладки

Шаги по устранению неполадок

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

## Выполнение интерактивной оболочки
docker exec -it api-service /bin/bash

## Проверка использования ресурсов контейнера
docker stats api-service

Рабочий процесс развертывания в продакшене

Стратегия маркировки образов

## Маркировка образа для продакшена
docker tag myapp:latest myregistry.com/myapp:v1.0

## Загрузка в частный реестр
docker push myregistry.com/myapp:v1.0

## Скачивание и запуск в продакшене
docker pull myregistry.com/myapp:v1.0
docker run -d myregistry.com/myapp:v1.0

Рекомендации

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

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

Summary

By mastering Docker CLI commands and workflow patterns, developers can significantly enhance their container management skills. This tutorial has equipped you with fundamental techniques to navigate, create, manage, and optimize Docker containers, empowering you to leverage Docker's full potential in modern software development and deployment scenarios.