Как указать имя контейнера в Docker?

«Как указать имя контейнера в Docker?» — вопрос из категории Docker, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Имя контейнера можно задать несколькими способами:

1. При запуске через docker run (флаг --name):

docker run --name my-nginx-container -d -p 80:80 nginx:alpine

Это создаст и запустит контейнер с именем my-nginx-container. Если контейнер с таким именем уже существует, команда завершится с ошибкой.

2. В Docker Compose (директива container_name):

services:
  web:
    image: nginx:alpine
    container_name: my-app-web  # Имя контейнера будет именно таким
    ports:
      - "80:80"

Важно: При использовании container_name в Compose вы не сможете запустить несколько экземпляров сервиса (scale) из-за конфликта уникальных имен.

3. Через флаг --name в docker create:

docker create --name my-stopped-container nginx:alpine
docker start my-stopped-container

Практическое применение в DevOps:

  • Удобство управления: Легче ссылаться на контейнер в командах (docker logs my-nginx-container, docker exec -it my-nginx-container sh).
  • Логирование и мониторинг: Имя контейнера часто попадает в логи и метрики, что упрощает идентификацию источника проблемы.
  • Скрипты автоматизации: Предсказуемые имена контейнеров делают скрипты обслуживания (бэкапы, проверки здоровья) более надежными.

Если имя не указано, Docker присвоит контейнеру случайное сгенерированное имя (например, festive_mcclintock).