Docker-07:Docker网络管理

简介: Docker容器的网络知识,自定义网络的配置

1. 目录

Docker

2. 概念

Docker 本身有4种网络工作模式,和一些自定义网络模式,在安装 Docker 时,默认会自动创建 bridgenonehost

  • Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
  • None:该模式关闭了容器的网络功能。
  • host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
  • Container模式:使用 --net=container:NAME_or_ID 指定。

2.1. 默认网络

Docker 时,它会自动创建上面的三个网络。如果需要指定某种网络,则用 --network 标志来指定。

2.2. Host

类似虚拟机 Vmware 中的桥接模式,即容器和宿主机在同一个网络中,但没有独立 IP 地址。这是因为 Docker 使用 LinuxNamespaces 技术来进行资源隔离,一个 Docker 容器一般会分配一个独立的 Network Namespace,但是因为使用的是 host 模式,此容器将不会获得一个独立的 Network Namespace ,而是和宿主机共用一个 Network Namespace。所以容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

2.3. None

该模式关闭了容器的网络功能,旨在说明容器并不需要网络。

2.4. Bridge

相当于 Vmware 中的 Nat 模式,容器使用独立 Network Namespace ,并连接到 docker0 虚拟网卡(默认模式)。通过 docker0 网桥以及 Iptables nat 表配置与宿主机通信。

2.5. Container

概念类似 host 模式, Container 模式指定新构建的容器和同已存在容器共享一个 Network Namespace ,而不是和宿主机共享IP、端口范围等。这样,两个容器除网络方面,其他的如文件系统、进程列表等还是隔离的。

3. 环境准备

我通过在 Windows 10 操作系统的虚拟机,安装的 CentOS 7.0CentOS 是最小安装版,安装后需要将服务器内核和补丁全部更新一遍。

CentOS 安装 Docker 后,可以查看 Docker 版本为 20.10.17 ,截止当前是 Docekr 社区版当中的最新版本。

  • Windows 10 Home 64bit
  • VMware Workstation Pro 16
  • CentOS 7.0
  • docker 20.10.17

4. 自定义网络

构建容器,默认使用 bridge 模式,构建命令中默认有 --net bridge ,创建网络避开 bridge 名字,因为这是 docker0 的名字。

docker network create 的基本命令如下:


Flag shorthand -h has been deprecated, please use --help

Usage:  docker network create [OPTIONS] NETWORK

Create a network

Options:
      --attachable           Enable manual container attachment
      --aux-address map      Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])
      --config-from string   The network from which to copy the configuration
      --config-only          Create a configuration only network
  -d, --driver string        Driver to manage the Network (default "bridge")
      --gateway strings      IPv4 or IPv6 Gateway for the master subnet
      --ingress              Create swarm routing-mesh network
      --internal             Restrict external access to the network
      --ip-range strings     Allocate container ip from a sub-range
      --ipam-driver string   IP Address Management Driver (default "default")
      --ipam-opt map         Set IPAM driver specific options (default map[])
      --ipv6                 Enable IPv6 networking
      --label list           Set metadata on a network
  -o, --opt map              Set driver specific options (default map[])
      --scope string         Control the network's scope
      --subnet strings       Subnet in CIDR format that represents a network segment

4.1. 创建

4.1.1. 创建网络

基于 bridge 模式创建名称为 bridge_nww 的网络。


docker network create -d bridge bridge_nww

4.1.2. 创建容器

创建一个容器,使用上述所创建的网络。


docker run -d -it --name clone_new --network bridge_nww clone-boot

docker network inspect bridge_nww 查看下网络使用情况。


[
    {
        "Name": "bridge_nww",
        "Id": "90eb654cb702b85fc8af44ced8121f06f284dc16d57b45dbff66648885582729",
        "Created": "2022-08-27T22:42:19.07173123-04:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.22.0.0/16",
                    "Gateway": "172.22.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "a8d257e00caefe4624fba5effbd67ae90ee46dc95793e877313fbc7cef814dd5": {
                "Name": "clone_new",
                "EndpointID": "e7dc1dfb4d0ff05ed02619f2eabd2217665bdd9500e9d64eb13753b5f9f2ec8b",
                "MacAddress": "02:42:ac:16:00:02",
                "IPv4Address": "172.22.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

Containers 中有我们的构建的容器。

4.1.3. 自定义Ping

自己创建网络可以直接使用容器名来互 Ping ,比如我有一个 Redis 的集群,就可以搭一个网络。网络之间是互相隔离的,不同集群使用不同网络。


docker exec -it ${容器1} ping ${容器2}

4.2. 网络之间通信

先用默认 Bridge 模式创建两个容器 ct1ct2 ,新构建一个新的网络工作模式 bridge_ct, 再构建一个使用 bridge_ct 网络的 ct3

  • 默认模式

docker run -itd --name ct1 wentos:7.0 /bin/bash
docker run -itd --name ct2 wentos:7.0 /bin/bash
  • 自定义模式

docker network create -d bridge bridge_ct 
docker run -itd --name ct3 --network bridge_ct wentos:7.0 /bin/bash
  • 添加网络模式

docker network connect bridge_ct ct2
  • 查看网络IP

后面我们依次登录 ct1ct2ct3 ,使用 docker attach ct1 命令,罗列出来各他们的 ip 信息。

名称 ip 网络
ct1 172.17.0.3 bridge
ct2 172.17.0.5、172.23.0.3 bridge
ct3 172.23.0.2 bridge、 bridge_ct
  • 验证结果

    • 在容器 ct2ct1 可以互相 ping

20220828153958

  • 在容器 ct2ct3 可以互相 ping

20220828153929

  • 在容器 ct1ct3 可以是无法通信的

4.3. 结论

不同容器间需相互通信,须在同一个网络环境下;使用默认 bridge 网络管理的容器可以使用容器IP进行通信,但无法使用容器名称进行通信;而使用自定义网络管理的容器则可以使用容器IP进行通信

目录
相关文章
|
6天前
|
存储 测试技术 数据安全/隐私保护
【Docker项目实战】使用Docker部署DailyTxT加密日记网络应用程序
【4月更文挑战第6天】使用Docker部署DailyTxT加密日记网络应用程序
59 1
|
6天前
|
应用服务中间件 nginx Docker
Docker网络管理
Docker网络管理
30 1
|
6天前
|
Ubuntu 应用服务中间件 nginx
Docker 网络
Docker 网络
69 0
|
4天前
|
关系型数据库 MySQL 网络安全
Docker部署MySQL,2024网络安全通用流行框架大全
Docker部署MySQL,2024网络安全通用流行框架大全
|
4天前
|
运维 网络协议 Linux
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
Docker网络_docker 网络,来看看这份超全面的《Linux运维面试题及解析》
|
6天前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
|
6天前
|
运维 Linux 虚拟化
Docker详解(十四)——Docker网络类型详解
Docker详解(十四)——Docker网络类型详解
24 0
|
6天前
|
Kubernetes Docker 容器
【Docker专栏】Docker网络配置详解:从Bridge到Overlay
【5月更文挑战第7天】本文介绍了Docker的四种网络类型:Bridge(默认,每个容器连接虚拟桥)、Host(容器共享宿主机网络命名空间)、Overlay(跨宿主机通信,适合集群环境)和Macvlan(容器直接连接物理网络)。Bridge网络适用于同主机通信,而Overlay适合多主机集群。Host网络缺乏隔离,Macvlan则让容器直接连到外部网络。理解这些网络类型有助于优化Docker容器的网络配置。
【Docker专栏】Docker网络配置详解:从Bridge到Overlay
|
6天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6天前
|
监控 安全 Docker
《Docker 简易速速上手小册》第6章 Docker 网络与安全(2024 最新版)
《Docker 简易速速上手小册》第6章 Docker 网络与安全(2024 最新版)
31 0