基础全面-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容器启动时候,自动配置好自己的网络信息,同一宿主机的所有容器都在一个网络下,彼此间可以通信。利用宿主机的网卡进行通信,因为涉及到网络转换,所以会造成资源消耗,网络效率会低。
img

2. host模式

  • host模式并没有为容器创建隔离的网络环境,该模式下容器会和宿主机共享同一个网络namespace,所以容器与宿主机都会使用宿主机的网络接口实现与外界的通信。
  • 容器的IP即宿主机的IP
  • host模式下的容器没有隔离的network namespace

容器使用宿主机的ip地址进行通信。
特点:容器和宿主机共享网络。
img

3. container模式

新创建的容器间使用,使用已创建的容器网络,类似一个局域网。
特点:容器和容器共享网络
img

4. none模式

不做任何网络的配置,可以最大限度的定制化。
不提供网络服务,容器启动后无网络连接。
img

5. overlay模式

容器彼此不在同一网络,而且能互相通行。
img

二、使用不同的模式创建容器(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
posted @   逃亡的布丁  阅读(147)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示