docker network

444 阅读3分钟

1.概念:docker启动后,会产生一个名为 docker0 的虚拟网桥。

image.png

2.常用命令:

(1)安装docker后默认创建3个网络,docker network ls

image.png

(2) 查看命令:docker network --help

image.png

常用的就这几个

docker network create aa_network:创建网络

docker network create aa_network :查看网络

docker network rm aa_network:删除网络

docker network inspect host:查看网络数据源

4.docker network的作用:

(1)容器间的互联和通信以及端口映射;

(2)容器IP变动时候可以通过服务名(不要写死ip)直接网络通信而不受到影响

5.网络模式

image.png

简言之

bridge模式:默认使用docker0,为每一个容器分配一个网络ip。

host模式:使用宿主机的

none模式:没有配置网络

container模式:和其他容器共享ip

docker容器实例网络ip可以通过docker inspect 容器Id查看,而且ip一直变化。

image.png

6.bridge模式:Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信。每个容器通过docker0网桥与宿主机相连。并且处于同一个网关中。容器上的ip是eth0 宿主机与容器相连通过veth,两两成对。

image.png

7.host模式:直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。没有独立的ip和网关,和宿主机公用一套。

以host模式启动:docker run -d -p 8083:8080 --network host --name tomcat83 tomcat

查看网络配置情况:docker inspect tomcat83 | tail -n 20

image.png

进入容器内部查看:docker exec -it ID bash ip addr 基本和宿主机一样。

8.none模式:禁用网络功能,只有lo标识(127.0.0.1表示本地回环)

9.container模式:新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。

10.自定义网络:各个容器可以通过ip相互通讯,可能存在ip换了的风险,现在通过服务名去连接。

创建网络:docker network create yzt_network

拉取免修改版tomcat docker pull billygoo/tomcat8-jdk8

运行两个自定义网络的容器:

docker run -d -p 8081:8080 --network yzt_network  --name tomcat81 billygoo/tomcat8-jdk8

docker run -d -p 8082:8080 --network yzt_network --name tomcat82 billygoo/tomcat8-jdk8

进去81:docker exec -it tomcat81 bash 查看ip:ip addr 连接情况:ping tomcat82

image.png

可以看出我们通过指定名称之后直接通过名称访问,不用通过ip。