docker-compose隐藏配置?

时间:2018-08-30 14:32:52

标签: docker docker-compose label

docker-compose的文档似乎暗示您唯一需要定义COMPOSE_PROJECT_NAME的时间是您想要控制docker-compose文件中资源的前缀。

https://docs.docker.com/compose/reference/envvars/#compose_project_name

但是,我发现此变量还有另一个功能。

在实验中,我发现为了使用docker-compose ps并查看与docker-compose up一起运行的容器,必须确保在运行时在环境中定义了相同的COMPOSE_PROJECT_NAME ps,然后就像您运行up

导出之前:

user@host:$ docker-compose ps

-- Empty Result --

导出后:

user@host:$ export COMPOSE_PROJECT_NAME=example-devops-docker
user@host:$ docker-compose ps
        Name                    Command            State           Ports         
--------------------------------------------------------------------------------

example_devops_docker   /bin/sh -c entrypoint.sh   Up      0.0.0.0:12312->80/tcp 

此外,我发现,如果您在另一个项目中运行docker-compose down之后运行docker-compose up,则在两个项目具有相同的文件夹名称的情况下,这些项目会相互冲突。

我在主目录中没有找到docker-compose的任何配置,转储环境也没有发现任何可能暗示我两个项目之间docker-compose混淆的docker-compose变量


当前,我倾向于认为docker-compose通过这些资源上的标签来管理docker资源。由于docker inspect $container name揭示了以下内容

"Labels": {
    "com.docker.compose.config-hash": "7f20a609dc9f9cf3ea580f802586fe0996e9d05ac720949b142a4841e30f0dba",
    "com.docker.compose.container-number": "1",
    "com.docker.compose.oneoff": "False",
    "com.docker.compose.project": "exampledevopsdocker",
    "com.docker.compose.service": "app",
    "com.docker.compose.version": "1.11.2"
}

我的问题是,是否有人知道docker-compose如何存储有关最后一个docker-compose up环境的信息,以及该信息如何在终端之间传输。

我目前的理论是,com.docker.compose.project标签的设置与您是否手动命名容器无关,并且如果您未明确指定COMPOSE_PROJECT_NAME,则此标签基于您的目录名称。

因此,每次我从文件夹内部向下进行docker-compose时,它都会基于文件夹名称生成一个ID,并在其标签内降低该ID的docker资源。

0 个答案:

没有答案