LoginSignup
0
1

別で起動したdockerコンテナをdocker composeのコンテナに認識させる

Last updated at Posted at 2020-07-11

紹介する内容

  • docker-compose.ymlにないdockerコンテナをdocker composeのコンテナに認識させます
    • docker-compose.ymlはdockerコンテナ2つ立てる設定にしておいて、別でdockerコンテナ立ててdocker-compose psに3つに見える例を見せます

結論

docker composeはdockerコンテナのlabelを基準として仲間を判定している

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 で確認できます

  • 全体図
    allD.png

  • 動的で立てるdockerコンテナが使うlabel設定ファイル部分
    labelD.png

まず、docker composeのdockerコンテナがどのようなlabelを持っているか確認します

以下のコマンドでdocker composeで立てたコンテナ名を確認して、labelを確認します。

docker ps
docker inspect コンテナ名

inspectCommand.png

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

"com.docker.compose.oneoff": .....
"com.docker.compose.project": .....
"com.docker.compose.service": .....

inspectLabelPart.png

動的に立てるdockerコンテナのlabelをdocker composeのdockerコンテナと同じくします

上のdocker inspectから確認したlabel中身の3行を持ってファイルを作ります。
./labelsファイルになります

com.docker.compose.oneoff=False
com.docker.compose.project=allow-raw-docker-as-compose
com.docker.compose.service=compose-postgres11.7

label設定を適用して動的にdockerコンテナを立てます

例を見せます

  1. docker composeがあるデレクトリーに移動します
  • cd qiita-example/docker-compose/allow-raw-docker-as-compose
  1. docker composeのコンテナたちをバックグラウンドで起動します
  • docker-compose up -d
  1. docker composeのコンテナだけあることを確認します
  • docker-compose ps
  1. docker composeではないdockerコンテナを起動します
  • docker run -d --label-file ./labels nginx:1.19.0-alpine
  1. 別で起動したdockerコンテナがdocker composeのコンテナに認識されました
  • docker-compose ps

allow-container-as-compose.gif

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1