[root@server2 ~]# docker network ls
[root@server2 ~]# docker run -it --rm busybox
/ # ip addr
保存退出(ctrl + pq)
[root@server2 ~]# docker ps
[root@server2 ~]# yum install bridge-utils -y
[root@server2 ~]# brctl show
[root@server2 ~]# docker run -d --name demo webserver
[root@server2 ~]# docker ps
[root@server2 ~]# brctl show
[root@server2 ~]# ip addr
[root@server2 ~]# docker ps
[root@server2 ~]# docker attach f9ad54d2295a
/ # route -n
/ # ping www.baidu.com
host模式可以让容器共享宿主机的网络栈。这样的好处是外部主机与容器直接通信,但是容器的网络缺少隔离性
[root@server2 ~]# docker run -d --name demo --network=host webserver
[root@server2 ~]# ip addr
[root@server1 ~]# curl 192.168.3.202
[root@server2 ~]# netstat -antlp
如果在host下在开启一个容器,由于只能有一个ip,所以旧的容器会被挤出去
docker run -d --name demo2 --network=host webserver
docker ps
docker ps -a
docker logs bb5f3f5cb0ca #查看日志
[root@server2 ~]# docker rm -f demo2
[root@server2 ~]# docker run -d --name demo2 webserver
[root@server2 ~]# docker ps
none模式是指禁用网络功能,只有lo借口,在容器创建时使用–network=none 指定
[root@server2 ~]# docker run -it --rm --network=none busybox
/ # ip addr
[root@server2 ~]# docker run -d --name demo webserver
[root@server2 ~]# docker inspect demo
[root@server2 ~]# docker run -it --rm busybox
/ # ip addr
/ # ping 172.17.0.2
/ # ping demo #ping不同
可以ping通ip,但是ping不了名字,但是容器里面的ip是不固定的(递增,先到先得),如果停用容器,开启新的容器,旧容器的的ip就被会新的容器顶用,如果ping ip难免会ping错,所以需要自定义一个网络
[root@server2 ~]# docker network create mynet1
[root@server2 ~]# docker network ls
[root@server2 ~]# docker run -d --name demo --network=mynet1 webserver
[root@server2 ~]# docker inspect demo
[root@server2 ~]# ip addr
[root@server2 ~]# docker run -d --name demo2 --network=mynet1 webserver
[root@server2 ~]# docker run -it --rm --network=mynet1 busybox
/ # ip addr
/ # ping demo
/ # ping demo2
[root@server2 ~]# docker stop demo
[root@server2 ~]# docker stop demo2
[root@server2 ~]# docker start demo2
[root@server2 ~]# docker start demo
[root@server2 ~]# docker inspect demo
demo之前的ip为2,修改后为3 。此时ping名字也不会出错。demo2与demo前后ip互换,同理
[root@server2 ~]# docker run -it --rm --network=mynet1 busybox
/ # ping demo
/ # ping demo2
添加子网和网关
[root@server2 ~]# docker network rm mynet1
[root@server2 ~]# docker network ls
[root@server2 ~]# docker network create --subnet 172.20.0.0/24 --gateway 172.20.0.1 net1
[root@server2 ~]# docker inspect net1
此时可以自己设定ip
[root@server2 ~]# docker run -it --rm --ip 172.20.0.10 --network net1 busybox
[root@server2 ~]# docker run -d --name demo webserver
[root@server2 ~]# docker inspect demo
[root@server2 ~]# docker run -it --rm --network net1 busybox
[root@server2 ~]# docker run -d --name demo2 --network net1 webserver
[root@server2 ~]# docker inspect demo2
[root@server2 ~]# docker network connect net1 demo
[root@server2 ~]# docker inspect demo
在自定义网络下开启的容器去ping demo的第二个ip可以通
[root@server2 ~]# docker run -it --rm --network net1 busybox
/ # ip addr
/ # ping 172.20.0.3