docker 02网络

发布于:2025-06-14 ⋅ 阅读:(15) ⋅ 点赞:(0)

docker 02网络

# 查看本地机器的网桥
[root@docker-110 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
br-b3ca5dd162d9		8000.0242525c43ca	no		
br-e5c6866dbfd1		8000.0242be6263df	no		
docker0		8000.0242f21d91d9	no	

# 用本地的一个网桥跑一个nginx

docker run -d -p 18877:80 --network=b3ca5dd162d9 nginx 

在这里插入图片描述

说明了这个容器在用这该网桥

# 看看默认的网桥,docker0的网段是多少
[root@docker-110 ~]# docker network ls
NETWORK ID     NAME             DRIVER    SCOPE
4de4dc2e2ec4   bridge           bridge    local
0db7cc002f15   host             host      local
e5c6866dbfd1   linux0224-net1   bridge    local
b3ca5dd162d9   linux0224-net2   bridge    local
2038547e0c41   none             null      local


docker inspect  bridge

      "Config": [
                {
                    "Subnet": "172.17.0.0/16", # 子网
                    "Gateway": "172.17.0.1"    # 网关
                }
            ]

使用默认的docker0去创建容器

# busybox简单调试网络信息
# 快速创建容器,查看网络信息
# 进入容器内看看,docker0的网络信息
==============================================
[root@docker-200 ~]#docker run -it  busybox

/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  
          inet addr:172.17.0.2  Bcast:172.17.255.255  Mask:255.255.0.0

如何证明这个使用率docker0这个网桥,口说无凭?

# 如何证明容器用来什么网桥
brctl show 
[root@docker-110 ~]# brctl show 
bridge name	bridge id		STP enabled	interfaces
br-b3ca5dd162d9		8000.0242525c43ca	no		vethb14f45b
br-e5c6866dbfd1		8000.0242be6263df	no		
docker0		8000.0242f21d91d9	no		veth14afd59



ifconfig 也看到了多个,veth虚拟网络接口命令

在这里插入图片描述

brctl show 

ip addr show 

# 更加简便的办法,查看网桥,和容器的关系
# 基于容器信息看到关系
# 修改docker0网桥之间,容器记录 a99   172.17.0.2 zheg IP


[root@docker-200 ~]#docker inspect a99d78d85464 |grep  -i networks -A 2
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "dfb497ddf3c426252b3267aeb312b07469107462bd04528b01a8b59177a27504",
--
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,


# 查看网桥详细信息,有哪些容器再用它

[root@docker-200 ~]#docker inspect bridge 
# 公司对容器的网络环境有要求,网络部门给了其他网段的ip,说你们的容器环境,只能用和这个
# 192.168.15.0/24

# 你默认的docker0,得使用这个网段下的ip,容器创建的ip是这个局域网内的
# docker0作为默认网桥,得修改docker配置文件
[root@docker-110 ~]# cat /etc/docker/daemon.json 
{
  "bip":"192.168.15.1/24",
  "registry-mirrors": ["https://ms9glx6x.mirror.aliyuncs.com"],
  "insecure-registries":["http://10.0.0.110","http://10.0.0.110:5000"]

}


[root@docker-110 ~]# systemctl daemon-reload
# 重载docker配置
# 重启


# 创建一个新的nginx容器
[root@docker-110 ~]# docker run -d -p18999:80 nginx 
fb086c522529d76eeaa83951ccdcc53f74f1c5625681d6806ead8fadb2a0f9df

# 可以看看他的网络地址
docker inspect id
5aa88aafb2b7a6338fb",
                    "Gateway": "192.168.15.1",
                    "IPAddress": "192.168.15.2",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DriverOpts": null,
                    "DNSNames": null
                }
            }
        }



# 访问看看
[root@docker-110 ~]# curl 192.168.15.2:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>

ok 

host模式,原理,背诵

1.  hosts启动的容器,没有自己的网卡,ip信息,直接用宿主机的
2.  但是除了network网络空间,其他如进程,文件系统,还是容器自己的
3.  通过参数 --network host 开启
4.  host模式,没有端口映射功能
5.  直接使用宿主机的网络环境,因此网络性能更高一筹。

直接使用主机的环境。也就少了一层数据包的转发

创建容器,使用host网络模式

[root@docker-200 ~]#docker run -d --network=host nginx
063d3e5dbc563d71f396fff608f3240fc83feac49406166e57e1e3aecb7904d4

在这里插入图片描述

# 这个走的是宿主的网络,
[root@docker-110 ~]# curl 10.0.0.110:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>

container 模式

1. container模式的容器是
容器A使用另一个已存在的容器B,共享它的网络空间


# 1.先准备好一个容器A
# 容器A用的是默认的 bridge网桥

[root@docker-200 ~]#docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS                                     NAMES
8742c0eda899   nginx     "/docker-entrypoint.…"   6 minutes ago   Up 6 minutes   0.0.0.0:18777->80/tcp, :::18777->80/tcp   happy_boyd


2.创建新容器,制定用容器A的网络环境

在这里插入图片描述

None 模式

1.None模式是不创建任何网络信息,这个模式几乎不用。

2.若是给none模式的容器创建网络环境,得自己基于ip命令去创建网络名称空间,操作较为复杂。




创建一个容器,有独立的文件系统,进程空间,用户空间,完全没有网络空间
如果要自己定制网络环境

1. 先创建网络名称空间
2. 再创建网络接口
3. 再创建ip信息等


网站公告

今日签到

点亮在社区的每一天
去签到