目录
我们需要将前面的docker-compose仓库停掉
[root@server1 harbor]# docker-compose stop
一.Docker网络
docker的镜像是令人称道的地方,但网络功能还是相对薄弱的部分。
docker安装后会自动创建3种网络:bridge、host、none
1.桥接网络
安装桥接网络
ip addr show docker0
yum install bridge-utils -y
[root@server1 ~]# brctl show
运行一个容器查看桥接
root@server1 ~]# docker run -d --name demo nginx
[root@server1 ~]# brctl show
当我们删除掉容器之后,桥接又消失了!
docker rm -f demo
brctl show
2.host网络模式
需要我们指定network host
我们可以看到我们的桥接口上没有出现新的桥接口
[root@server1 ~]# docker run -d --name demo --network host nginx
[root@server1 ~]# brctl show
[root@server1 ~]# brctl show docker0
我们查看端口,可以发现docker运行的镜像nginx占用的是80端口!
[root@server1 ~]# netstat -antlp
这个时候,我们再运行一个容器起名为demo2,注意观察,启动之后,查看进程有两个进程demo,demo2。但是很快在查看进程,demo2消失了!
再也不会出现。
为什么?
因为加上参数–network host会占用虚拟机的80端口,所以刚开始尝试启动会看到进程,但是会被demo的80端口挤掉demo2!!
[root@server1 ~]# docker run -d --name demo2 --network host nginx
[root@server1 ~]# docker ps
我们查看日志就知道:
docker logs
3.none模式
none模式是指禁用网络功能,只有lo接口,在容器创建时使用!
先删除掉刚才创建的容器,重新运行容器:
[root@server1 ~]# docker rm -f demo
[root@server1 ~]# docker rm -f demo2
[root@server1 ~]# netstat -antlp ##80端口随之消失!
[root@server1 ~]# docker run -it --rm --network=none busybox
/ # ip addr
我们发现ip addr的时候:只有lo接口
二.自定义网络
1.创建自定义网桥
建议使用自定义的网络来控制哪些容器可以相互通信,还可以自动DNS解析容器名称到IP地址。
创建网桥!!查看类型为brodge!!
[root@server1 ~]# docker network create mynet1
[root@server1 ~]#docker network ls
测试:
这时我们发现我们是可以ping demo可以直接成功,说明这模式是可以给提供解析的
[root@server1 ~]# docker run -d --name demo1 --network mynet1 nginx
[root@server1 ~]# docker run -it --rm --network mynet1 busybox
/ # ip addr
/ # ping demo
注意:
我们再开一个nginx,停掉所有的demo,再次开启时,顺序反一下,查看ip变化
[root@server1 ~]# docker run -d --name demo2 --network mynet1 nginx
[root@server1 ~]