docker容器---网络一(网络模式和自定义网络)

1.三种网络模式

bridge

[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

ip是递增的
docker容器---网络一(网络模式和自定义网络)_第1张图片

[root@server2 ~]# brctl show
[root@server2 ~]# docker run -d --name demo webserver
[root@server2 ~]# docker ps
[root@server2 ~]# brctl show
[root@server2 ~]# ip addr

docker容器---网络一(网络模式和自定义网络)_第2张图片
docker容器---网络一(网络模式和自定义网络)_第3张图片
桥接下的默认网关和上网

[root@server2 ~]# docker ps
[root@server2 ~]# docker attach f9ad54d2295a
/ # route -n
/ # ping www.baidu.com

docker容器---网络一(网络模式和自定义网络)_第4张图片

host

docker容器---网络一(网络模式和自定义网络)_第5张图片
host模式可以让容器共享宿主机的网络栈。这样的好处是外部主机与容器直接通信,但是容器的网络缺少隔离性

删掉前面运行的容器,确保环境纯净
docker容器---网络一(网络模式和自定义网络)_第6张图片
host下共用ip

[root@server2 ~]# docker run -d --name demo --network=host webserver
[root@server2 ~]# ip addr

docker容器---网络一(网络模式和自定义网络)_第7张图片
端口也会占用

[root@server1 ~]# curl 192.168.3.202
[root@server2 ~]# netstat -antlp

docker容器---网络一(网络模式和自定义网络)_第8张图片
docker容器---网络一(网络模式和自定义网络)_第9张图片
如果在host下在开启一个容器,由于只能有一个ip,所以旧的容器会被挤出去

docker run -d --name demo2 --network=host webserver
docker ps
docker ps -a
docker logs bb5f3f5cb0ca	#查看日志

docker容器---网络一(网络模式和自定义网络)_第10张图片
可以开启host外的容器

[root@server2 ~]# docker rm -f demo2
[root@server2 ~]# docker run -d --name demo2 webserver
[root@server2 ~]# docker ps

docker容器---网络一(网络模式和自定义网络)_第11张图片

none

none模式是指禁用网络功能,只有lo借口,在容器创建时使用–network=none 指定

[root@server2 ~]# docker run -it --rm --network=none busybox
/ # ip addr

docker容器---网络一(网络模式和自定义网络)_第12张图片

2.自定义网络

[root@server2 ~]# docker run -d --name demo webserver
[root@server2 ~]# docker inspect demo

docker容器---网络一(网络模式和自定义网络)_第13张图片
docker容器---网络一(网络模式和自定义网络)_第14张图片

[root@server2 ~]# docker run -it --rm busybox
/ # ip addr
/ # ping 172.17.0.2
/ # ping demo #ping不同

docker容器---网络一(网络模式和自定义网络)_第15张图片
可以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

docker容器---网络一(网络模式和自定义网络)_第16张图片
docker容器---网络一(网络模式和自定义网络)_第17张图片

[root@server2 ~]# ip addr

docker容器---网络一(网络模式和自定义网络)_第18张图片

[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

docker容器---网络一(网络模式和自定义网络)_第19张图片
测试ping名字会不会错

[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

docker容器---网络一(网络模式和自定义网络)_第20张图片
demo之前的ip为2,修改后为3 。此时ping名字也不会出错。demo2与demo前后ip互换,同理

[root@server2 ~]# docker run -it --rm --network=mynet1 busybox
/ # ping demo
/ # ping demo2

docker容器---网络一(网络模式和自定义网络)_第21张图片


添加子网和网关

[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 

docker容器---网络一(网络模式和自定义网络)_第22张图片
docker容器---网络一(网络模式和自定义网络)_第23张图片
docker容器---网络一(网络模式和自定义网络)_第24张图片

此时可以自己设定ip

[root@server2 ~]# docker run -it --rm --ip 172.20.0.10 --network net1 busybox

docker容器---网络一(网络模式和自定义网络)_第25张图片
默认网络下开启一个容器demo

[root@server2 ~]# docker run -d --name demo webserver
[root@server2 ~]# docker inspect demo

docker容器---网络一(网络模式和自定义网络)_第26张图片
在自定义网络下开启的容器ping不了demo

[root@server2 ~]# docker run -it --rm --network net1 busybox

docker容器---网络一(网络模式和自定义网络)_第27张图片
自定义网络下不设定ip开启容器demo2,ip也是默认递增

[root@server2 ~]# docker run -d --name demo2 --network net1 webserver
[root@server2 ~]# docker inspect demo2

docker容器---网络一(网络模式和自定义网络)_第28张图片
此时默认网络下开启的demo添加net1网络,会有两个ip

[root@server2 ~]# docker network connect net1 demo
[root@server2 ~]# docker inspect demo

docker容器---网络一(网络模式和自定义网络)_第29张图片
在自定义网络下开启的容器去ping demo的第二个ip可以通

[root@server2 ~]# docker run -it --rm --network net1 busybox
/ # ip addr
/ # ping 172.20.0.3

docker容器---网络一(网络模式和自定义网络)_第30张图片
在这里插入图片描述

你可能感兴趣的:(笔记,docker,网络)