Docker网络 Network 详解

2023-11-22 15:12:45 浏览数 (1)

概要

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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞