将在其他地方启动的Docker容器识别为Docker Compose的容器
介绍的内容
-
- docker-compose.ymlにないdockerコンテナをdocker composeのコンテナに認識させます
docker-compose.ymlはdockerコンテナ2つ立てる設定にしておいて、別でdockerコンテナ立ててdocker-compose psに3つに見える例を見せます
结果
docker composeはdockerコンテナのlabelを基準として仲間を判定している
-
- 筆者の調査不足かもしれませんが、公式ドキュメントで該当する内容は発見できませんでした。
ですが、docker composeのソースコードからlabelが関わっていることを確認しました。
https://github.com/docker/compose/blob/4bf623d53da363d576bfb4e57d139df97032f004/compose/project.py#L330
Docker Engine SDKsで作業しながら、動的に立てたdockerコンテナをdocker composeに編入したい時に応用できます
- docker composeが立てたコンテナのlabelを確認して、動的に立てる予定のdockerコンテナのlabelを同じくすれば可能です
labelを同じくしてdocker composeの仲間扱いされたdockerコンテナは一緒にdocker-compose downできます
我将开始介绍。
目录结构
你可以在https://github.com/cheekykorkind/qiita-example/tree/master/docker-compose/allow-raw-docker-as-compose 查看整个源代码。

首先,我们要确认Docker Compose的Docker容器具有哪些标签。
请使用以下命令查看由Docker Compose创建的容器名称,并确认标签。
docker ps
docker inspect コンテナ名

目標であるlabelはConfig配下のLabelsで確認できます。
必要な部分は以下の3行です。後で動的に立てるdockerコンテナのlabel付ける時に使います。
"com.docker.compose.oneoff": .....
"com.docker.compose.project": .....
"com.docker.compose.service": .....

動的に立てるdockerコンテナのlabelをdocker composeのdockerコンテナと同じくします
根据上述的docker inspect命令确认的标签内容,创建一个文件,命名为./labels。
com.docker.compose.oneoff=False
com.docker.compose.project=allow-raw-docker-as-compose
com.docker.compose.service=compose-postgres11.7
应用标签设置来动态创建Docker容器。
docker run -d –label-file ./labels nginx:1.19.0-alpine
コマンドを説明するとdocker run -d –label-file label設定ファイルパス dockerイメージ名です
同じ動作できるコマンドを追加で紹介します
docker run -d –label com.docker.compose.oneoff=False –label com.docker.compose.project=allow-raw-docker-as-compose –label com.docker.compose.service=compose-postgres11.7 nginx:1.19.0-alpine
https://docs.docker.com/engine/reference/commandline/run/#set-metadata-on-container–l—label—label-file
我会给你举一个例子。
- docker composeがあるデレクトリーに移動します
- cd qiita-example/docker-compose/allow-raw-docker-as-compose
- docker composeのコンテナたちをバックグラウンドで起動します
- docker-compose up -d
- docker composeのコンテナだけあることを確認します
- docker-compose ps
- 我会启动不是由docker compose管理的docker容器。
- docker run -d –label-file ./labels nginx:1.19.0-alpine
- 用另一种方式启动的Docker容器被识别为Docker Compose的容器。
- docker-compose ps
