none模式
禁用网络功能。
在none模式下,并不为docker容器进行任何网络配置。进入容器内,使用 ip addr查看网卡信息,只能看到 lo(本地回环网络127.0.0.1网卡)。
container模式
新建的容器和已经存在的一个容器共享网络IP配置,而不是和宿主机共享。
新创建的容器不会创建自己的网卡、IP,而是和一个指定的容器共享IP、端口范围。两个容器除了网络共享,其他的如文件系统、进程列表依然是隔离的。
示例:
此时使用 ip addr查看两台容器的网络,会发现两台容器的eth0网卡内的IP等信息完全相同。
如果关掉了alpine1容器,因为alpine2的网络使用的alpine1共享网络,所以关掉alpin1后,alpine2的eth0网卡也随之消失了。
自定义网络
容器间的互联和通信以及端口映射。
容器 IP 变动时候可以通过服务名直接网络通信而不受影响。(类似Eureka,通过服务名直接互相通信,而不是写死IP地址)。
docker中还有一个 --link 进行容器网络互联,但是已经被标记为过时的,可能会在将来的版本中移除这个功能。推荐使用自定义网络替换link。
自定义桥接网络(自定义网络默认使用的是桥接网络 bridge):
新建自定义网络
查看网络列表
创建容器时,指定加入我们自定义的网络中
Shell
运行代码
复制代码
1
2
3
docker run -d -p 8081:8080 --network tomcat_network --name tomcat1 tomcat:8.5-jdk8-corretto
docker run -d -p 8082:8080 --network tomcat_network --name tomcat2 tomcat:8.5-jdk8-corretto
此时进入tomcat1中,使用ping命令测试连接tomcat2容器名,发现可以正常连通
Shell
运行代码
复制代码
1
2
3
4
5
6
7
8
9
安装ifconfig命令
yum install -y net-tools
安装ip addr命令
yum install -y iproute
安装ping命令
yum install -y iputils
直接ping容器名,不需要ping IP地址
ping tomcat2
link连接
示例:
Shell
运行代码
复制代码
1
2
3
4
5
6
7
8
9
10
启动一台mysql容器
--name 为容器指定一个别名
docker run --name mysql-matomo -p 3308:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.28
启动另一个容器,通过--link连接到mysql容器
--link 容器名称:本容器连接对方时的别名
docker run -d -p 8888:80 --link mysql-matomo:db --name matomo matomo:4.9.0