docker网络管理

服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_64

2.1 Docker 网络概述

Docker 容器和服务如此强大的原因之一是您可以将它们连接在一起,或者将它们连接到非 Docker 工作负载。Docker 容器和服务甚至不需要知道它们部署在 Docker 上,或者它们的对等点是否也是 Docker 工作负载。无论您的 Docker 主机运行 Linux、Windows 还是两者的混合,您都可以使用 Docker 以与平台无关的方式管理它们。

2.2 docker 网络类型

Docker 的网络子系统是可插拔的,使用驱动程序。默认情况下存在几个驱动程序,并提供核心网络功能:

  • bridge:默认网络驱动程序。如果您未指定驱动程序,则这是您正在创建的网络类型。当您的应用程序在需要通信的独立容器中运行时,通常会使用桥接网络。
  • host:对于独立容器,去掉容器与 Docker 主机之间的网络隔离,直接使用主机的网络。
  • overlay: Overlay 网络将多个 Docker 守护进程连接在一起,使 swarm 服务能够相互通信。您还可以使用覆盖网络来促进 swarm 服务和独立容器之间的通信,或者不同 Docker 守护程序上的两个独立容器之间的通信。这种策略消除了在这些容器之间进行操作系统级路由的需要。
  • ipvlan:IPvlan 网络使用户可以完全控制 IPv4 和 IPv6 寻址。VLAN 驱动程序建立在此之上,为对底层网络集成感兴趣的用户提供了对第 2 层 VLAN 标记甚至 IPvlan L3 路由的完全控制。
  • macvlan:Macvlan 网络允许您将 MAC 地址分配给容器,使其在您的网络上显示为物理设备。Docker 守护进程通过它们的 MAC 地址将流量路由到容器。macvlan 在处理期望直接连接到物理网络而不是通过 Docker 主机的网络堆栈路由的遗留应用程序时,使用驱动程序有时是最佳选择。
  • none:对于这个容器,禁用所有网络。通常与自定义网络驱动程序一起使用。none不适用于 swarm 服务。请参阅 禁用容器网络。
  • 网络插件:您可以通过 Docker 安装和使用第三方网络插件。这些插件可从 Docker Hub 或第三方供应商处获得。

网络驱动总结:

  • 当您需要多个容器在同一个 Docker 主机上进行通信时,用户定义的桥接网络是最佳选择。
  • 当网络堆栈不应该与 Docker 主机隔离时,主机网络是最好的,但您希望容器的其他方面被隔离。
  • 当您需要在不同 Docker 主机上运行的容器进行通信时,或者当多个应用程序使用 swarm 服务一起工作时,覆盖网络是最佳选择。
  • 当您从 VM 设置迁移或需要容器看起来像网络上的物理主机时,Macvlan 网络是最佳选择,每个主机都有唯一的 MAC 地址。
  • 第三方网络插件允许您将 Docker 与专门的网络堆栈集成。

docker network connect 将某个容器连接到一个docker网络
docker network create 创建一个docker局域网络
docker network disconnect 将某个容器退出某个局域网络
docker network inspect 显示某个局域网络信息
docker network ls 显示所有docker局域网络
docker network prune 删除所有未引用的docker局域网络
docker network rm 删除docker网络

查看docker支持的网络

[root@k8smaster ~]# docker network list
NETWORK ID     NAME      DRIVER    SCOPE
7e5d5c751c19   bridge    bridge    local
d6114fdf8604   host      host      local
d37b373ceadd   none      null      local

查看bridge(桥接)网络的属性

[root@k8smaster ~]# docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "7e5d5c751c19179bd28704782956624fb6e1e51bbf1dec148a6a2857361c999f",
        "Created": "2021-12-28T14:43:30.751950569+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "1edbf56b01ee2f851bfb3dce9e955df18077e889c5254a8ac1dc24c4c343e5c5": {
                "Name": "redhat7.2",
                "EndpointID": "138e81107ffaca48a84d46c99a379245d02f031884567a214111f21833914a4e",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            },
            "c2d01513585bca0ceb67841e8307119e51ab9d6001cca76c147cc0f7ec441c63": {
                "Name": "redhat",
                "EndpointID": "9f0368fb571e73565af237a2d259f513063f83a7c18611b23ec4f11fe64e7bd5",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

4.1 创建一个bridge桥接网络并使用

创建一张网卡brnet:类型为bridge,子网IP为:172.28.0.0/16

[root@k8smaster ~]# docker network create --driver=bridge --subnet=172.28.0.0/16 brnet
50007eb84ee90f225233b873bfc395a0f0da680bd22b8ac1d45add39d45f527b

查看brnet网卡属性

[root@k8smaster ~]# docker network inspect brnet
[
    {
        "Name": "brnet",
        "Id": "50007eb84ee90f225233b873bfc395a0f0da680bd22b8ac1d45add39d45f527b",
        "Created": "2021-12-29T15:53:20.641824413+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.28.0.0/16"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

查看docker网络,发现多了brnet

[root@k8smaster ~]# docker network list
NETWORK ID     NAME      DRIVER    SCOPE
7e5d5c751c19   bridge    bridge    local
50007eb84ee9   brnet     bridge    local
d6114fdf8604   host      host      local
d37b373ceadd   none      null      local

使用centos镜像创建一个容器centos7,网卡绑定为brnet

[root@k8smaster ~]# docker run -dit --restart=always --name=centos7 --network=brnet hub.c.163.com/library/centos:latest
2de5574af1c392524a9476bd76e96e90a0035a789e02f102a47e464ea53ac502

#centos7容器的地址为:172.28.0.2
[root@k8smaster ~]# docker inspect centos7 | grep -i ipaddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.28.0.2",

查看brnet网络的属性

[root@k8smaster ~]# docker network inspect brnet
[
    {
        "Name": "brnet",
        "Id": "50007eb84ee90f225233b873bfc395a0f0da680bd22b8ac1d45add39d45f527b",
        "Created": "2021-12-29T15:53:20.641824413+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.28.0.0/16"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "2de5574af1c392524a9476bd76e96e90a0035a789e02f102a47e464ea53ac502": {
                "Name": "centos7",
                "EndpointID": "27a8ff58525ec91f956a4f2aa0bdeaf2c042080efc3b2f443d0f2f8fd34084b9",
                "MacAddress": "02:42:ac:1c:00:02",
                "IPv4Address": "172.28.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

4.2 busybox容器使用host网络

拉取busybox镜像

[root@k8smaster ~]# docker pull hub.c.163.com/library/busybox:latest
latest: Pulling from library/busybox
aab39f0bc16d: Pull complete
Digest: sha256:662af1d642674367b721645652de96f9c147417c2efb708eee4e9b7212697762
Status: Downloaded newer image for hub.c.163.com/library/busybox:latest
hub.c.163.com/library/busybox:latest

创建一个busybox容器,网络类型为host类型

[root@k8smaster ~]# docker run -dit --restart=always --name=busybox --network=host hub.c.163.com/library/busybox:latest
0a02f83b685c2bf120f9b6de5be9f0c3fe3fb5730134b00995aaa8cc849613e3

进入busybox容器,发现容器里的网络就是物理机的网络

[root@k8smaster ~]# docker attach busybox
/ # ifconfig
br-50007eb84ee9 Link encap:Ethernet  HWaddr 02:42:1E:A8:31:1C
          inet addr:172.28.0.1  Bcast:172.28.255.255  Mask:255.255.0.0
          inet6 addr: fe80::42:1eff:fea8:311c/64 Scope:Link
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:438 (438.0 B)
......

ens32     Link encap:Ethernet  HWaddr 00:0C:29:BF:50:D8
          inet addr:192.168.110.137  Bcast:192.168.110.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:febf:50d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:604560 errors:0 dropped:0 overruns:0 frame:0
          TX packets:424501 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:460937108 (439.5 MiB)  TX bytes:212554025 (202.7 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:7464831 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7464831 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:1397878730 (1.3 GiB)  TX bytes:1397878730 (1.3 GiB)
......

/ # exit
[root@k8smaster ~]#

查看host网络属性

[root@k8smaster ~]# docker network inspect host
[
    {
        "Name": "host",
        "Id": "d6114fdf860416d813aa5b250fb03b6be128dd90ad873a08179c6138ba15dee6",
        "Created": "2021-06-30T17:50:40.360664894+08:00",
        "Scope": "local",
        "Driver": "host",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": []
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "0a02f83b685c2bf120f9b6de5be9f0c3fe3fb5730134b00995aaa8cc849613e3": {
                "Name": "busybox",
                "EndpointID": "864e7899e2bae367c7fbc60d423c09efe84da7afe43004e783785589ff40588f",
                "MacAddress": "",
                "IPv4Address": "",
                "IPv6Address": ""
            },
            "6eb6f15dfc84b118f9da5d6294c857c169378dc2668f660ebb3a769cbabab7f3": {
                "Name": "k8s_POD_etcd-k8smaster_kube-system_1dcb59df47c677756cdf25f28d920325_16",
                "EndpointID": "f8bb0f0e910e8fc1888087270946f659bbb85c3391ded29c706644134f02ad8f",
                "MacAddress": "",
                "IPv4Address": "",
                "IPv6Address": ""
            },
            .......

            "fc4069583b9570defd3e486e7eb56d241561f926cc1ce79fde8db43770038d99": {
                "Name": "k8s_POD_kube-proxy-7sxwx_kube-system_8e5ffc39-9f10-4fd0-ac80-61779b806d6a_16",
                "EndpointID": "85f62759a1916873b333aadfb8b7a6aa782f3245a966ed2da448287a70eda18f",
                "MacAddress": "",
                "IPv4Address": "",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

4.3 nginx容器使用host网络

nginx容器的网络类型为host

[root@k8smaster ~]# docker run -dit --restart=always --name=nginx --network=host hub.c.163.com/library/nginx:latest
2972a5284ef43036f6eaf288ee6c2bb361f24ab99368ceda877077e6d9b8334b

直接访问物理机的ip即可访问容器里的nginx

[root@k8smaster ~]# curl 192.168.110.137

Welcome to nginx!

    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.

For online documentation and support please refer to
nginx.org.

Commercial support is available at
nginx.com.

Thank you for using nginx.

4.4 busybox容器使用none网络

none类型的网络一般用来做测试,none类型创建的容器,里面的的网络只有127.0.0.1

[root@k8smaster ~]# docker run -it --restart=always --name=busybox-test --network=none hub.c.163.com/library/busybox:latest
/ # ifconfig
lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # exit

Original: https://www.cnblogs.com/renshengdezheli/p/16639858.html
Author: 人生的哲理
Title: docker网络管理

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582051/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux Centos7.5 vsftp 的安装与配置

    安装及配置 安装 sudo yum install vsftpd -y 服务管理 启动服务 service vsftpd start 关闭服务 service vsftpd sto…

    Linux 2023年6月14日
    072
  • Windows 添加nginx到服务

    一、下载nginx 地址:http://nginx.org/en/download.html (稳定版) 解压到相应的磁盘,本文是:E:\nginx\nginx-1.18.0 二、…

    Linux 2023年6月8日
    0107
  • Redis内存满了怎么办

    Redis是基于内存的key-value数据库,因为系统的内存大小有限,所以我们在使用Redis的时候可以配置Redis能使用的最大的内存大小。 1、通过配置文件配置 通过在Red…

    Linux 2023年5月28日
    068
  • Bash编程中对字符串的操作

    Bash的字符串操作 String="Hello World" #获取字符串长度,获取字符长度的变量调用应该使用${},这里大括号是必须的 #例1-1 echo…

    Linux 2023年6月13日
    0101
  • 数据库的灾备

    数据是企业重要的生产资料,关键数据的丢失可能会给企业致命一击,因为数据是计算机系统存在的原因和基础。数据往往是不可再生的,一旦发生数据丢失,企业就会陷入困境:客户资料、技术文件、财…

    Linux 2023年6月6日
    096
  • 设计模式——中介者模式

    中介者模式定义 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 Mediator抽象中介者角色 抽象中…

    Linux 2023年6月7日
    075
  • 实验二 电子传输系统安全-进展2

    一、利用java程序实现文件加密 我们的文件在计算机中都是以二进制的形式存储,而Java中IO流(字节流和字符流)可以实现对底层文件的读取,故利用Java的IO流进行文件拷贝时,可…

    Linux 2023年6月8日
    097
  • shell脚本并发执行

    简单的并发脚本 如果shell不能执行,或者报格式错误,记得用 Original: https://www.cnblogs.com/phpdragon/p/10511256.htm…

    Linux 2023年5月28日
    090
  • 常见题目

    这几天有朋友反映给小编说让多发点关于面试的文章,小编深知从事IT行业的难处,跳槽多,加班多,薪资不乐观,大多数朋友都想找新的工作,进入一个好的公司,今天小编就给大家带来了C语言面试…

    Linux 2023年6月13日
    087
  • jenkins 设置钉钉机器人+jenkins调用shell脚本使用钉钉机器人自定义发消息并通知指定人

    两种钉钉通知方式,一种是使用安装的钉钉插件来通知,但是这个不好定义通知内容,没办法控制发送条件,只要配置了,不管构建参数(分支,渠道,配置),都会发通知,第二种是使用脚本的方式来通…

    Linux 2023年5月28日
    084
  • CH343芯片应用—硬件设计

    CH343属于沁恒第三代USB转串口芯片系列的单串口型号,基于经典版CH340芯片完成技术革新,实现USB转高速异步串口,支持最高6Mbps串口波特率。 电源设计 CH343芯片有…

    Linux 2023年6月7日
    0156
  • PyTorch 介绍 | TRANSFORMS

    数据并不总是满足机器学习算法所需的格式。我们使用 transform对数据进行一些操作,使得其能适用于训练。 所有的TorchVision数据集都有两个参数,用以接受包含trans…

    Linux 2023年6月16日
    0136
  • jmeter之数据库连接JDBC安装与使用

    jmeter中如果要用sql语句查询数据库,就需要用到JDBC请求和JDBC Connection Configuration了。 首先来了解下,JDBC是什么?英文全称为Java…

    Linux 2023年6月8日
    0108
  • WEB自动化-09-Cypress 测试报告

    9 测试报告 一份好的测试报告,可以很直观的看出整个测试过程的各种数据。而Cypress的测试报告是 基于Mocha,因此任何支持Mocha的测试报告都可以应用于Cypress。但…

    Linux 2023年6月7日
    0107
  • Git的使用

    Git的概念 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目 Git的安装 Git官网https://git-scm.com/下载安装直接下一步…

    Linux 2023年6月13日
    076
  • 白话TCP/IP原理

    TCP/IP(Transmission-Control-Protocol/Internet-Protocol),中文译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Inte…

    Linux 2023年6月14日
    066
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球