目录
一、docker的network常用命令
1.1、查看docker的网络
docker network ls
1.2、创建一个network
docker network create aa
1.3、删除网络aa
docker network rm aa
1.4、查看网络源数据
docker network inspect bridge
二、network能干嘛
1、容器间的互联以及端口映射
2、容器IP变动时候可以通过服务名直接网络通信而不受影响
三、network的五种网络模式
3.1、network的底层ip与容器映射变化
3.2、docker的bridge
1、Docker服务默认会创建一个docker0网桥(其上有一个docker0内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥相互通信。
2、2 docker run的时候,没有指定network的话默认使用的网桥模式就是bridge,使用的就是docker0。在宿主机ifconfig,就可以看到docker0和自己create的network eth0,eth1,eth2……代表网卡一,网卡二,网卡三……, lo代表127.0.0.1,即localhost. inet addr用来表示网卡的IP地址
3.2.1、测试用例
第一步,启动两个tomcat容器
#第一台tomcat容器
docker run -d -p 8081:8080 --name tomcat01 30ef4019761d
#第二台tomcat容器
docker run -d -p 8081:8080 --name tomcat02 30ef4019761d
第二步、查看
3.3、docker的host
容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。
3.3.1、测试用例
第一步、启动容器服务
docker run -d --network host --name tomcat03 30ef4019761d
第二步、在主机查看
3.4、docker的none
在none模式下,并不为Docker容器进行任何网络配置。
3.4.1、测试用例
docker run -d -p 8084:8084 --network none --name tomcat04 30ef4019761d
查看网络情况
3.5、docker的container
新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。
3.5.1、测试用例
第一步、启动alpine容器服务
docker run -it --name alpine2 alpine /bin/sh
docker run -it --network container:alpine2 --name alpine3 alpine /bin/sh
第二步、验证
3.6、docker的自定义网络
3.6.1、启动两台tomcat容器
#第一台容器
docker run -d -p 8081:8080 --name=tomcat02 30ef4019761d
#第二台容器
docker run -d -p 8082:8080 --name=tomcat02 30ef4019761d
3.6.2、测试两台容器之间网络并通
问题:当使用容器名并不能并通网络
3.6.3、创建自定义网络
docker network create aa
3.6.4、在容器中添加自定义网络
docker run -d -p 8081:8080 --network aa --name tomcat01 30ef4019761d
docker run -d -p 8082:8080 --network aa --name tomcat02 30ef4019761d