ネットワーク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をマウントします。
この記事が気に入ったらサポートをしてみませんか?