zoukankan      html  css  js  c++  java
  • 菜鸟系列docker——docker网络(8)

    Docker网络

    Docker在容器内部运行应用,这些应用之间的交互依赖于大量不同的网络,这意味着Docker需要强大的网络功能。

    Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络,单机意味着该网络只能在单个Docker主机上运行,并且只能与所在Docker主机上的容器进行连接。主要分为三种网络,none、host、bridge。

    每个Docker主机都有一个默认的单机桥接网络。在Linux上网络名称为bridge,除非通过命令行创建容器时指定参数--network,否则默认情况下,新创建的容器都会连接到该网络。

    Docker 安装时会自动在 host 上创建三个网络,使用docker network ls查看本机创建的docker网络

    ➜  first-network git:(1d4d04e9c) ✗ docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    63f7ed247cf6        bridge              bridge              local
    6a36000d75cc        host                host                local
    31edf37a7261        none                null                local
    

    可以通过docker network inspect查看某个网络具体描述

    ➜  ~ docker network inspect bridge
    [
        {
            "Name": "bridge",
            "Id": "63f7ed247cf6bfbfb2bd811140ffa2136342a453079a486106328c000dcdb01f",
            "Created": "2019-12-13T09:14:25.797831625Z",
            "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": {},
            "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": {}
        }
    ]
    

    1.1 none 网络

    none 网络就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定使用 none 网络。

    1.2 host 网络

    连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。可以通过 --network=host 指定使用 host 网络。

    1.3 bridge网络

    在Linux Docker主机之上,默认的“bridge”网络被映射到内核中为“docker0”的Linux网桥。可以通过docker network inspect命令观察到上面的输出内容。

      "com.docker.network.bridge.name": "docker0",
    

    在启动容器时,可以根据--network=bridge指定docker网络。

    1.4 自定义网络

    Docker 提供三种 user-defined 网络驱动:bridge, overlay 和 macvlan。overlay 和 macvlan 用于创建跨主机的网络,我们后面有章节单独讨论。

    常用命令

    Docker网络有自己的子命令,主要包括以下几种。

    • docker network ls用于列出运行在本地Docker主机上的全部网络。
    • docker network create创建新的Docker网络。默认情况下,在Windows上会采用NAT驱动,在Linux上会采用Bridge驱动。读者可以使用-d参数指定驱动(网络类型)。
    • docker network create -d overlay overnet会创建一个新的名为overnet的覆盖网络,其采用的驱动为Docker Overlay。
    • docker network inspect提供Docker网络的详细配置信息。
    • docker network prune删除Docker主机上全部未使用的网络。
    • docker network rm删除Docker主机上指定网络。
    如果你觉得写的不错,请移步www.itkezhan.top或者关注公众号IT程序员客栈
  • 相关阅读:
    Java基础06 组合
    纸上谈兵: 树, 二叉树, 二叉搜索树
    Java基础05 实施接口
    纸上谈兵: 队列 (queue)
    纸上谈兵: 数学归纳法, 递归, 栈
    Java基础01 从HelloWorld到面向对象
    纸上谈兵: 表 (list)
    Java基础02 方法与数据成员
    纸上谈兵: 排序算法简介及其C实现
    纸上谈兵: 栈 (stack)
  • 原文地址:https://www.cnblogs.com/i-dandan/p/12044491.html
Copyright © 2011-2022 走看看