Docker не добавляет имя проекта к именам контейнеров при запуске нескольких экземпляров

У меня есть набор докеров, который я запускаю, пока довольно простой

Я хочу запустить несколько экземпляров своего проекта, и я прочитал этот Запустить несколько докеров

Теперь при запуске docker-compose up -d compose не добавляет имя проекта к контейнерам, таким как docker-compose up -p PRNAME -d, и я получаю следующую ошибку:

ERROR: for container1  Cannot create container for service service1: Conflict. The container name "/container1" is already in use by container "f7aeb2ef782556ae5b0". You have to remove (or rename) that container to be able to reuse that name.

Я мог бы что-то пропустить здесь.

Часть моего docker-compose.yml выглядит так:

services:
  service1:
    image: "${PROJECT_REPO}:image"
    container_name: "container1"
    ports:
      - 443:443
      - 8000:80
    networks:
      - db
      - proxy
      - oauth
    depends_on:
      - db

Можете ли вы добавить образец минимального файла docker-compose.yml к вопросу, который показывает поведение, которое вы описываете? (Вы вручную указываете container_name:?)

David Maze 27.05.2019 12:03

Да, я вручную указываю container_name в docker-compose.yml

Mousse 27.05.2019 12:45
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
4
2
2 629
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Когда вы явно устанавливаете container_name: в своем docker-compose.yml файле, имя контейнера будет точно, как вы укажете; Docker Compose не добавит к нему свой префикс для каждого каталога.

Обычно для вас это совершенно не имеет значения, и удалить container_name: безопасно. Вы по-прежнему сможете получить доступ к другим контейнерам, используя их имя службы в docker-compose.yml в качестве имен хостов, а docker-compose CLI предоставляет оболочки для команд управления, таких как docker-compose stop, которые будут действовать на правильный контейнер.

У вас также возникнут проблемы с ports:, и здесь нет четкого решения. Только один контейнер или процесс может привязываться к определенному порту на узле. Вы можете не указывать первый номер порта в ports:, и Docker выберет для вас порт.

ports:
  - '80'
  - '443'

но тогда нужно вручную найдите соответствующий номер порта хоста

docker-compose port service1 80

О да, теперь для меня это имеет смысл СПАСИБО! Я уже однажды сталкивался с этой проблемой с портами при попытке масштабирования с использованием параметра --scale, но да, мне придется позволить докеру выбрать их за меня.

Mousse 27.05.2019 13:26

Другие вопросы по теме