基础全面-docker网络模式
目录
一、 网络模式介绍
模式 | 简介 | 使用 |
---|---|---|
birdge | 为每一个容器分配、设置IP等。并将容器连接到docker0。虚拟网桥,默认为该模式 | – network bridege默认使用docker0 |
host | 容器将不会虚拟出自己的网卡,配置自己的IP等。而是使用宿主机的IP和端口 | – network host |
none | 容器有独立的network namespace,但并没有对其进行任何网络设置,如分配veth pair和网桥连接、IP等 | – network none |
container | 新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP、端口范围等 | – network container:name或者容器ID指定 |
1. bridge 模式
Docker的默认模式,它会在docker容器启动时候,自动配置好自己的网络信息,同一宿主机的所有容器都在一个网络下,彼此间可以通信。利用宿主机的网卡进行通信,因为涉及到网络转换,所以会造成资源消耗,网络效率会低。
2. host模式
- host模式并没有为容器创建隔离的网络环境,该模式下容器会和宿主机共享同一个网络namespace,所以容器与宿主机都会使用宿主机的网络接口实现与外界的通信。
- 容器的IP即宿主机的IP
- host模式下的容器没有隔离的network namespace
容器使用宿主机的ip地址进行通信。
特点:容器和宿主机共享网络。
3. container模式
新创建的容器间使用,使用已创建的容器网络,类似一个局域网。
特点:容器和容器共享网络
4. none模式
不做任何网络的配置,可以最大限度的定制化。
不提供网络服务,容器启动后无网络连接。
5. overlay模式
容器彼此不在同一网络,而且能互相通行。
二、使用不同的模式创建容器(host、default、bridge)
1. 以 host 网路模式运行容器
# docker run -itd --name cctest_host --network host sp2x86:jcc /bin/bash
- 查看该容器的网络模式
# docker inspect edc8b49d19b3 |grep -i network
"NetworkMode": "host",
"NetworkSettings": {
"Networks": {
"NetworkID": "f91c07c56735131f638ba62e6b751ce24288b229faa5b01403cf302348ec60ef",
- 查看容器 IP
# docker exec -it edc8b49d19b3 hostname -I
10.1.160.101 192.168.122.1 172.17.0.1
宿主机ip
# hostname -I
10.1.160.101 192.168.122.1 172.17.0.1
2. 以bridge网络模式运行容器
# docker run -itd --name cctest_bridge --network bridge sp2x86:jcc /bin/bash
- 查看该容器的网络模式
# docker inspect 0f2de48362d3 |grep -i network
"NetworkMode": "bridge",
"NetworkSettings": {
"Networks": {
"NetworkID": "12906b056567d4bd51b127aedf2a6e825245909a579bfce97920a6a36dd2c0f3",
- 查看容器IP
[root@localhost ~]# docker exec -it 0f2de48362d3 hostname -I
172.17.0.2
宿主机ip
# hostname -I
10.1.160.101 192.168.122.1 172.17.0.1
3. 以默认网络模式运行容器
# docker run -it --name cctest_default sp2x86:jcc /bin/bash
- 查看该容器的网络模式
# docker inspect 055fa98f2c25 |grep -i network
"NetworkMode": "default",
"NetworkSettings": {
"Networks": {
"NetworkID": "12906b056567d4bd51b127aedf2a6e825245909a579bfce97920a6a36dd2c0f3",
- 查看容器IP
# docker exec -it 055fa98f2c25 hostname -I
172.17.0.3
# hostname -I
10.1.160.101 192.168.122.1 172.17.0.1
三、 宿主机重启前后容器自启动以及网络情况分析
指路+留坑
https://www.cnblogs.com/comecc/p/16738513.html
四、 相关命令
1. docker network ls
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
eb533f70f5b7 bridge bridge local
20e4ec674591 host host local
99c23f4eb526 none null local
2. docker network ls -f
[root@localhost ~]# docker network ls -f driver=bridge
NETWORK ID NAME DRIVER SCOPE
eb533f70f5b7 bridge bridge local
[root@localhost ~]# docker network ls -f driver=host
NETWORK ID NAME DRIVER SCOPE
20e4ec674591 host host local
3. docker network ls -q
[root@localhost ~]# docker network ls -q
eb533f70f5b7
20e4ec674591
99c23f4eb526
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现