🐳
Dockerで別のコンテナのネットワークスタックを共有する
概要
docker inspect
の出力を眺めていたら"NetworkMode": "container:47bc56571a88..."
[1]となっているコンテナがあり疑問に思ったのでdocker run
のリファレンスを見てみるとNetwork: containerというセクションに説明が書かれていました。
docker run
するとき--network container:<コンテナIDまたは名前>
とすると、そのコンテナのネットワークスタックを共有するそうです。
手元で簡単に試してみます。
環境
使用しているDockerのバージョンは次の通りです。
$ docker --version
Docker version 20.10.8, build 3967b7d
動作確認
まずネットワークスタックを共有するコンテナを用意します。
$ docker run -d --name share --network none busybox tail -f /dev/null
ced60c35af7a7e57136814915c12670763c19e35e1498deb7a81b2383359698e
次にNginxを用意します。
--network
でshare
コンテナを設定しています。
$ docker run -d --name web --network container:share nginx
645d785bbba1f917d8e42d138da874bb8fe8b3ee30e8528250ff86adcbb447b3
最後にもう1つコンテナを立ててlocalhost:80
へのHTTPリクエストが通ることを確認します。
$ docker run --rm --network container:share curlimages/curl \
> curl -s --head localhost:80
HTTP/1.1 200 OK
Server: nginx/1.19.9
Date: Thu, 23 Sep 2021 07:56:03 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 30 Mar 2021 14:47:11 GMT
Connection: keep-alive
ETag: "606339ef-264"
Accept-Ranges: bytes
Nginxへ接続できていますね。
動作確認ができたので後始末しておきます。
$ docker rm -f web share
web
share
以上です。
-
ハッシュ値が長いため
...
と表現して省略しています。 ↩︎
Discussion