docker network(两个mysql容器相互通信)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xianglingchuan/article/details/82800479

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

猜你喜欢

转载自blog.csdn.net/xianglingchuan/article/details/82800479
今日推荐