运行多个实例时,Docker不会在容器名称前添加项目名称

时间:2019-05-27 09:49:46

标签: docker docker-compose

到目前为止,我有一组使用docker-compose up -d进行基本操作的docker

我想运行我的项目的多个实例,并且已经阅读了Run multiple docker compose

现在,在运行docker-compose up -p PRNAME -d时,compose不会在prname_container1之类的容器前面添加项目名称,并且出现以下错误:

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

1 个答案:

答案 0 :(得分:1)

container_name:文件中显式设置docker-compose.yml时,容器名称将精确地等于您指定的名称。 Docker Compose不会向其添加每个目录的前缀。

通常,这对您完全没有关系,可以安全地删除container_name:。您仍然可以使用docker-compose.yml中的服务名称作为主机名来访问其他容器,并且docker-compose CLI为诸如docker-compose stop之类的管理命令提供了包装,这些命令将在正确的容器上起作用。 / p>

您还将遇到ports:的麻烦,这里没有一个明确的解决方案。只有一个容器或进程可以绑定到主机上的特定端口。您可以省略ports:中的第一个端口号,然后Docker会为您选择一个端口

ports:
  - '80'
  - '443'

但是您需要manually look up the corresponding host port number

docker-compose port service1 80