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。