docker-составить скрытую конфигурацию? - PullRequest
0 голосов
/ 30 августа 2018

Документация 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 запутался между моими 2 проектами


В настоящее время я склонен думать, что 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 изнутри папки, он генерирует идентификатор на основе имени папки и сбрасывает ресурсы докера с этим идентификатором внутри его меток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...