見出し画像

ネットワークStorage

Network Namespaceとは

docker-composeで起動したコンテナ同士は接続できて、スタンドアローンで起動したコンテナは接続できないのか?

コンテナが起動するとき、裏ではネットワークネームスペース(個室)が作られ、そこにコンテナが割り当てられます。

docker-composeで起動したコンテナは新しいBridgeネットワークの中に作られるので、docker runで起動したデフォルトBridgeネットワークから接続できないのです。

docker networkを表示
docker network ls
docker inspect ubuntu | grep -i ipaddress

Dockerネットワークを確認する(none, bridge, host, overlay)

docker networkコマンドで表示、作成、削除ができる。

ネットワークを表示する
docker network ls

ネットワークを--driverオプションで作成する
docker network create --driver bridge custom_bridge

ネットワークを削除する
docker network rm custom_bridge

docker networkには4つのモードがあって、デフォルトのbridge、host、null、overlayがあります。

bridgeモードの場合、ホストの中のdockerBridgeネットワークからIPが振り分けられるので、IPレンジがホストと異なります。

hostモードの場合、ホストのIPレンジからIPが振り分けられ、ホストポートを使うので、-p 8080:80のようなMappingができません。

nullモードの場合、コンテナはbridgeにもhostネットワークにもリンクされずIPも無いので、接続不可の無人島状態になります。

overlayモードの場合、複数ホストがあるときに使います。docker swarmやkubernetesが複数ホストのケースです。

docker volumeのマウント

ドッカーのストレージにはvolumeやmountが存在する。
コンテナは儚いライフサイクルなので、データはコンテナ内ではなくホスト上に保存します。

docker runコマンドで--volume /opt/datadir:/var/lib/mysqlのようにホスト上のフォルダとコンテナ内のフォルダを指定してvolumeをマウントします。

画像1


この記事が気に入ったらサポートをしてみませんか?