docker工人为什么要组织起来去除其他正在运行的囚徒?

我build立了一个docker-image,并使用docker-compose up命令启动了一个容器。 然后我修改了容器,并做了一个docker commit命令。 当我尝试用新创build的图像启动一个容器时,它会启动新容器,但会销毁旧容器。 当我接下来尝试启动旧容器时,它会销毁新容器并启动旧容器。 我很困惑。 docker工人/docker工人应该这样做吗?

我正在运行的命令

 docker-compose -f docker-compose.yml up -d 

docker-compose文件($ IMAGE_NAME和$ CONTAINER_NAME不同于启动旧的和新的容器)

 version: '2' services: yolo: build: context: . dockerfile: Dockerfile image: $IMAGE_NAME container_name: $CONTAINER_NAME ports: - "$EXTERNAL_SSH_PORT:22" 

docker版本:

 docker --version Docker version 1.12.3, build 6b644ec 

docker合成版本:

 docker-compose --version docker-compose version 1.9.0, build 2585387 

我的问题与此有关:

https://github.com/docker/compose/issues/3472

值得注意的是:

@ kachkaev这不是一个错误,并且与caching无关。

你的目录都被命名为相同的东西(docker),所以当你在任一目录中运行docker-compose时,你正在处理同一个项目。 每次更新相同服务(web)的configuration以更改图像名称和容器名称时。

它看起来像你真正想要的是两个独立的应用程序,每个都有自己的图像和容器。 在这种情况下,我build议做以下事情:

重命名每个目录以使其不同,或使用–project-name选项或COMPOSE_PROJECT_NAME环境variables为每个应用程序设置不同的项目名称。 例如,myappdev和myappprod。 从两个撰写文件中删除container_name选项 – 这是不必要的。 如果在两个目录中运行docker-compose,则现在应该有两个容器:myappdev_web和myappprod_web。