首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Docker网络 Network 详解

Docker网络 Network 详解

原创
作者头像
小明爱吃火锅
发布2023-11-22 15:12:45
发布2023-11-22 15:12:45
1.3K0
举报
文章被收录于专栏:小明说Java小明说Java

概要

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概要
  • 创建Docker network
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档