Dockerのネットワークは、Bridge、Host、Overlay、None、Macvlanに分けることができます。その中で、デフォルトのタイプはブリッジタイプです。いくつかの一般的なコマンドと構成を見てみましょう。
仮想マシンとホストのネットワーク関係と同様に、コンテナのホストも異なるネットワークを持つことができます。同じネットワーク上のコンテナは相互に通信できます。
例1
ブリッジネットワークを作成し、サブネットとゲートウェイを指定します
docker network create --subnet 10.1.0.0/24 --gateway 10.1.0.1 br02
作成後に確認し、ホストに追加のネットワークインターフェイスがあることを確認します。これはたまたまゲートウェイアドレスです。
このネットワークの特定のコンテンツをチェックしてください
例2
最初に前のネットワークを削除してから、新しいネットワークを作成します。今回は、例1に基づいてip-rangeとlabelも指定します。
docker network prune
docker network create --subnet 10.1.0.0/16 --gateway 10.1.0.1 \
--ip-range=10.1.4.0/24 --driver=bridge --label=host4network br04
ネットワーク上に新しいコンテナを作成します
docker container run --name network-test01 -it --network br04 centos /bin/bash
次に、ネットワークツールをインストールします
yum update -y
yum install -y net-tools
次に、アドレスを確認します
ゲートウェイをチェックしてください
netstat -rn
DNSを見てください
cat /etc/resolv.conf
例3
指定したIPアドレスをコンテナに割り当てます
docker container run -d --name network-test02 --ip 10.1.4.102 --network br04 nginx
例4
ネットワーク内の2つのコンテナを接続します
最初にローカルホストネットワークを作成します
docker network create -d bridge --internal localhost
次に、このネットワーク上に新しいMysqlコンテナを作成します
<br/>docker container run -d --name test_mysql \<br/>-e MYSQL_ROOT_PASSWORD=P4sSw0rd0 \<br/>--network localhost mysql:5.7<br/>
Bridgeネットワーク上に新しいコンテナを作成します
<br/>docker container run -it --name ping-mysql \<br/>--network bridge \<br/>centos<br/>
彼は別のネットワークに属しているため、現時点ではpingを実行できません
しかし、彼をローカルホストネットワークに追加すると、互いに通信できます
docker network connect localhost ping-mysql
チェックすると、彼が2つのネットワークに属していることがわかります。docker container inspect ping-mysql
例5
ローカルホストネットワークにnginxコンテナを作成します
docker container run -d --name private-nginx -p 8081:80 --network localhost nginx
彼は外部からアクセスできないことがわかりました
しかし、それは内部からアクセスすることができます