概要
Docker network 是 Docker 容器之间以及容器和宿主机之间的网络连接。Docker network 提供了一种简单、可扩展的方式来组织和管理容器,使得它们可以在同一个网络中进行通信。在 Docker 中,网络可以被看作是一个虚拟网络,它包含一组容器,这些容器可以通过网络接口进行通信。Docker network 可以为容器提供网络隔离、服务发现和负载均衡等功能。
Docker network 的特点包括:
1. 网络是容器化的:Docker network 可以被看作是一个容器,它可以像其他容器一样进行启动、停止和删除等操作。
2. 网络是跨主机的:Docker network 可以将多台主机连接在一起,使得容器可以在不同主机之间进行通信。
3. 网络是动态的:Docker network 可以根据需要进行创建和删除,网络中的容器也可以动态地添加或删除。
4. 网络是自动配置的:Docker network 可以自动为容器提供网络连接,容器不需要进行任何配置。
创建Docker network
创建启动一个docker容器就会,生成一个docker0的虚拟网桥,通过ifconfig可以查看
1)用途:
容器间的互连和互通以及端口映射
容器IP变动时候可以通过服务名直接网络通讯而不受影响(容器端口ip会变化的)
2)网络模式:
查看命令:docker network ls
bridge:
为每一个容器分配、设置IP,并容器连接到一个docker0
host:
容器将不会虚拟出自己的网卡,配置自己的IP而是使用宿主机的IP和端口
none:
容器有独立的network,但没有对其进行任何网络设置
查看某个容器的网络ip信息:docker inspect 191a6b995675 | tail -n 20
代码语言:javascript复制"MacAddress": "02:42:ac:11:00:07",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "919e5674b182d85c079ed7b18454d14a92e8a3c456f813a859d8a1ebd62630f9",
"EndpointID": "a22c09a244031456b43e79ec3e13766996a85ea29e7e958b2330a6c4dc05ffc1",
"Gateway": "172.17.0.1", # docker0网络
"IPAddress": "172.17.0.7", # docker分配给这个容器的ip
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:07"
}
}
}
}
]
3)体现network的作用,设置不同容器同一个网络,通过容器名字可以ping通
不是同一个network
启动两个容器:
代码语言:javascript复制docker run --name oqm_docker01 -d -p 8081:8080 6af6348de10c
docker run --name oqm_docker02 -d -p 8081:8080 6af6348de10c
各自进入容器内部,ip addr 查看各种ip,通过ip 可以ping通,但是ping容器名字就会提示不存在
同一个network
新建一个network
代码语言:javascript复制docker network create qm_network
两个容器启动都用通过一个network
代码语言:javascript复制docker run --name oqm_docker01 --network qm_network -d -p 8081:8080 6af6348de10c
docker run --name oqm_docker02 --network qm_network -d -p 8081:8080 6af6348de10c
各自进入容器内部,ip addr 查看各种ip,通过ip 可以ping通,ping容器名字也可以通
文末最后加上一句:我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!