自由気ままに書いちゃおう

好きなことをつらつらと・・・

【Docker】任意のネットワークにコンテナを所属させる

前回からの続きです。

www.guri2o1667.work

 

■はじめに

任意のDockerネットワークをコンテナに紐付ける際、
① 新規コンテナを作成する際にDockerネットワークを指定する方法
② 既存コンテナを任意のDockerネットワークに繋ぎなおす方法
の2つがあります。

■① 新規コンテナを作成する際にDockerネットワークを指定する方法

docker run実行時に--netオプションを指定します。
今回はDockerコンテナ名がh1 , h2 というhttpdコンテナを作成しております。
作成時に、myns1というbridgeネットワークを指定しています。

f:id:guri2o1667:20210527140104p:plain

 docker network inspect myns1 でコンテナのIPアドレスを確認します。

f:id:guri2o1667:20210527140454p:plain

上記の通り、172.18.0.3 , 172.18.0.2のIPアドレスが割り当てられています。

■② 既存コンテナを任意のDockerネットワークに繋ぎなおす方法

docker network connectとdocker network disconnectコマンドを利用します。

ここでは、上記①でh2コンテナをmyns1に繋いでいる為、
一度myns1から切断し、myns2に繋ぎなおしてみます。

【切断】
docker network disconnect ネットワーク名 コンテナ名

f:id:guri2o1667:20210527141052p:plain


上記でh2コンテナをmyns1から切断することができました。

f:id:guri2o1667:20210527141159p:plain

【再接続(繋ぎなおし)】
docker network connect ネットワーク名 コンテナ名

f:id:guri2o1667:20210527141251p:plain

■同一bridgeネットワーク内でのコンテナ名での疎通確認

任意のbridgeネットワークの場合、
コンテナ名でコンテナ間通信が可能なため、実際に検証してみます。
※念のためですが、デフォルトのbridgeネットワークではコンテナ名での疎通(名前解決)はできません。常にIPアドレスを指定する必要があります。

検証のため、busyboxのコンテナを2つ新規作成(bb1 , bb2)し、
bb1,bb2コンテナが所属するネットワークはmyns1とします。

【コンテナ新規作成】

f:id:guri2o1667:20210527141844p:plain
【コンテナの所属ネットワークを確認】

f:id:guri2o1667:20210527141948p:plain

【コンテナ(bb1)にログインし、bb2にPing疎通】

f:id:guri2o1667:20210527142125p:plain



以上です。