docker network(兩個mysql容器相互通信)

docker network的基本命令

Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

創建網絡

不指定網絡驅動時默認創建的bridge網絡
docker network create simple-network
查看網絡內部信息
docker network inspect simple-network
應用到容器時,可進入容器內部使用ifconfig查看容器的網絡詳情

root$ docker network create simple-network
9c8411766392c869cec05deb701150d8d600d3e4132dacf99394938b3d881ff9
root$ docker network inspect simple-network
[
    {
        "Name": "simple-network",
        "Id": "9c8411766392c869cec05deb701150d8d600d3e4132dacf99394938b3d881ff9",
        "Created": "2018-09-17T07:13:06.577577Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.20.0.0/16",
                    "Gateway": "172.20.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

鏈接容器

創建三個容器,分別前兩個使用默認網絡啓動容器,第三個使用自定義bridge網絡啓動。
然後再將第二個容器添加到自定義網絡。這三個容器的網絡情況如下
第一個容器:只有默認的bridge
第二個容器:屬於兩個網絡——bridge、自定義網絡(mynet)
第三個容器:只屬於自定義網絡

# 創建三個容器 container1,container2,container3
docker run -itd --name=container1 centos
docker run -itd --name=container2 centos

# 創建網絡mynet
docker network create -d bridge --subnet 172.25.0.0/16 mynet

# 將容器containerr2連接到新建網絡mynet
docker network connect mynet container2

# 使用mynet網絡來容器container3
docker run --net=mynet --ip=172.25.3.3 -itd --name=container3 centos

# 查看這三個容器的網絡情況
docker inspect container1 # bridge
docker inspect container2 # bridge, mynet
docker inspect container3 # mynet

各容器IP訪問地址如下:
container1IP地址(172.17.0.4)
container2
IP地址(172.25.0.2)
container3====IP地址(172.25.3.3)

# 進入container2
root$ docker attach container2

#訪問container3正常
[root@b4737767449c /]# ping -w 4 container3
PING container3 (172.25.3.3) 56(84) bytes of data.
64 bytes from container3.mynet (172.25.3.3): icmp_seq=1 ttl=64 time=0.128 ms
64 bytes from container3.mynet (172.25.3.3): icmp_seq=2 ttl=64 time=0.095 ms
64 bytes from container3.mynet (172.25.3.3): icmp_seq=3 ttl=64 time=0.091 ms
64 bytes from container3.mynet (172.25.3.3): icmp_seq=4 ttl=64 time=0.097 ms

#訪問container1失敗
[root@b4737767449c /]# ping -w 4 container1
ping: container1: Name or service not known

#訪問container1的IP地址正常
[root@b4737767449c /]# ping -w 4 172.17.0.4
PING 172.17.0.4 (172.17.0.4) 56(84) bytes of data.
64 bytes from 172.17.0.4: icmp_seq=1 ttl=64 time=0.209 ms

斷開網絡與移除網絡

斷開網絡
container3斷開網絡後將無法與container3通信

  root$ docker network disconnect mynet container3

  #進入container2
  root$  docker attach container2

  #未斷開網絡mynet前ping正常
  [root@b4737767449c /]# ping container3
  PING container3 (172.25.3.3) 56(84) bytes of data.
  64 bytes from container3.mynet (172.25.3.3): icmp_seq=1 ttl=64 time=0.111 ms
  64 bytes from container3.mynet (172.25.3.3): icmp_seq=2 ttl=64 time=0.098 ms

  #斷開網絡mynet後ping操作失敗
  [root@b4737767449c /]# ping container3
  ping: container3: Name or service not known

移出網絡

移除網絡要求網絡中所有的容器關閉或斷開與此網絡的連接時,才能夠使用移除命令:
    #斷開最後一個連接到mynet網絡的容器
    root$ docker network disconnect mynet container2
    # 移除網絡
    root$ docker network rm mynet
    mynet

創建mysqlA及mysqlB容器時指定network參數

docker run -p 1306:3306 --name mysqlA --network my_net --network-alias mysqlA -v $PWD/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.22


docker run -p 2306:3306 --name mysqlB --network my_net --network-alias mysqlB -v $PWD/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.22
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章