circleci で複数イメージを指定したとき、それは docker としてどのような構成で実現される?
circleci 2.0 では、ジョブを実行する環境として、複数 docker image を指定できます。 https://circleci.com/docs/2.0/executor-types/#using-multiple-docker-images
この環境では、以下が実現されています。
- ビルドコマンドを実行するメインのコンテナにおいて、2つめ以降の image が expose するポートを、
localhost:${exposeされたポート番号}
からアクセスできる
docker で実行されているコンテナにおいて、このようなことはどうやったら可能なのだろう、とふと思いました。
というのも、例えば素朴に docker-compose で複数コンテナ実行を行った場合、他のコンテナは基本的にそのコンテナの名称がホストに設定されています。なので、どこのコンテナにアクセスするかは、そのコンテナに割り振られたホスト名を、アクセス元のコンテナから指定してホスト解決をする必要があると理解しています。
一方、 circleci の実行環境では、すべての2番目以降のコンテナのポートは、おもむろに localhost:ポート番号 で接続できているように思っています。
質問
- circleci で複数 docker image での環境でジョブを実行した場合、その場合のコンテナの構成(とくにネットワーク) はどのように構築されますか?