docker网络模式

1、默认网络

#安装docekr以后,会默认创建三种网络,可以通过 docker network ls 查看,
docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
5040bd77d0b1   bridge    bridge    local
42b4fb7b9ee4   host      host      local
31219b2fcd01   none      null      local
#docker 网络模式介绍
bridge #为每一个容器分配,设置ip,并将容器连接到一个docker0 虚拟网桥,默认为此模式
host #容器将不会虚拟主机的网卡和ip,而是使用宿主机的IP和端口
none #容器有独立的Netwoek namespace ,需要自己分配 veth pair和网桥连接,IP
#上面三个是默认设置类型
container #不会创建自己的网卡和IP 而是和指定的一个容器共享IP,端口范围。

1、检查网络映射关系

# busybox 小工具
docker run -it --name bbox01 busybox
#宿主机与容器的关系为对等的 
/ # ip a
62: eth0@if63:
[root@#localhost ~]# ip a
63: veth817661e@if62:

2、host模式

#可以直接使用宿主的ip地址和端口
#但是容器的网络缺少隔离星
# --network 指定网络模式为host模式 或者 --net 指定网络模式
docker run -it --name nnox02 --network host busybox 
/ # 

3、none网络模式

#none网络模式是直接禁用网络模式,使用lo解开local的间歇,代表127.0.0.1,本地环回借口
docker run -it --name bbox03 --net none busybox 
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo

4、container网络模式

#container网络模式是docekr中的一中特殊网络模式,
#在创建容器是通过参数 --net container:一运行的容器名称|ID 或者--network container:一运行的容器名称|ID
#出于这个模式的docker容器会共享一个网络站,这样两个容器之间可以使用localhost高效快速通信
#contaniner模式不会创建自己的网卡和ip,两个容器除了网络之外,其他的文件系统,进程列表等还是隔离的
#指定网络模式为共享bbox01的网络模式
docker run -it --name  bbox04 --net container:bbox01 busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
62: eth0@if63: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff
#对比
docker exec -it bbox01 sh
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
62: eth0@if63: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue 
    link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0

2、自定网络

1、创建自定义bridge网络

#创建自定义bridge网络
docker network create custom_network
e80f79d54fe2744071e4e94bb9b3f98a550d6a0e5c46f7977f8fb335e480eecb
#创建自定义的网断和网关的 网桥
docker network create --subnet 172.21.0.0/24 --gateway 172.21.0.1 custom_network02
ddc97b6e75d40c5ea4f667ea8adaf311e0d15535035d9328b0d6048008f1e7bd
#查看信息是否正确
docker network inspect custom_network02
                    "Subnet": "172.21.0.0/24",
                    "Gateway": "172.21.0.1"


#检查网络是否创建成功
docker network ls
NETWORK ID     NAME             DRIVER    SCOPE
5040bd77d0b1   bridge           bridge    local
e80f79d54fe2   custom_network   bridge    local
42b4fb7b9ee4   host             host      local
31219b2fcd01   none             null      local

2、使用自定义网络添加容器

 docker run -it --name bbox05 --net custom_network  busybox
 docker run -it --name bbox06 --net custom_network  busybox
 docker exec -it bbox05 sh
 ping bbox06 #直接ping另一个容器的名字
 / # ping 172.18.0.3   #ping 另一个容器的ip
### Docker 网络模式详解及配置方法 #### 1. **Bridge 模式** 这是 Docker 默认的网络模式。当启动一个容器时,如果没有显式指定 `--network` 参数,则会自动使用 Bridge 模式[^2]。在这种模式下,Docker 守护进程会在主机上创建一个名为 `docker0` 的虚拟网桥,并为每个容器分配独立的 IP 地址和子网掩码。 - 配置方式: ```bash docker run --network=bridge <image_name> ``` 这种模式适合大多数场景下的应用部署需求,因为它提供了良好的隔离性和灵活性。 --- #### 2. **Host 模式** 在 Host 模式下,容器不会被分配单独的网络命名空间,而是共享宿主机的操作系统网络栈。这意味着容器内的服务可以直接绑定到宿主机的真实接口地址,而无需 NAT 或端口映射操作。 - 配置方式: ```bash docker run --network=host <image_name> ``` 需要注意的是,在此模式下运行的应用可能会与其他正在监听相同端口号的服务发生冲突。 --- #### 3. **None 模式** 如果希望完全屏蔽掉某个特定容器对外部世界的访问能力,可以选用 None 模式。此时除了 loopback 接口外不会再有其他任何形式的联网支持存在[^4]。 - 配置方式: ```bash docker run --network=none <image_name> ``` 用户需手动完成所有的必要设置比如添加额外物理适配器或者调整路由表项等工作才能让此类实例重新获得连通性。 --- #### 4. 自定义 Overlay/Custom Networks (User-defined networks) 为了实现更复杂的跨节点集群环境中的多台机器之间相互协作的需求, 可以考虑构建自定义overlay类型的逻辑拓扑结构来满足实际业务情况的要求[^3]. 这种高级别的抽象层允许不同主机上的多个容器彼此透明地交换数据包而不必关心底层具体的传输细节. - 创建一个新的覆盖型网络: ```bash docker network create -d overlay my_overlay_network ``` 之后就可以像平常一样把新产生的资源关联至目标镜像文件之上啦! --- ### 总结 每种 docker 网络模型都有其独特之处以及适用范围。对于简单的单机测试用途来说 bridge 已经足够强大;而对于追求极致性能表现又不想牺牲太多安全性的朋友而言 host 则是个不错的选择;最后当我们面临分布式计算框架搭建难题的时候不妨试试看 user defined ones 吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值