1.概念:docker启动后,会产生一个名为 docker0 的虚拟网桥。
2.常用命令:
(1)安装docker后默认创建3个网络,docker network ls
(2) 查看命令:docker network --help
常用的就这几个
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.网络模式
简言之
bridge模式:默认使用docker0,为每一个容器分配一个网络ip。
host模式:使用宿主机的
none模式:没有配置网络
container模式:和其他容器共享ip
docker容器实例网络ip可以通过docker inspect 容器Id查看,而且ip一直变化。
6.bridge模式:Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信。每个容器通过docker0网桥与宿主机相连。并且处于同一个网关中。容器上的ip是eth0 宿主机与容器相连通过veth,两两成对。
7.host模式:直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。没有独立的ip和网关,和宿主机公用一套。
以host模式启动:docker run -d -p 8083:8080 --network host --name tomcat83 tomcat
查看网络配置情况:docker inspect tomcat83 | tail -n 20
进入容器内部查看: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
可以看出我们通过指定名称之后直接通过名称访问,不用通过ip。