zoukankan      html  css  js  c++  java
  • Docker 容器的网络

    如果你通过 Docker 提供的用户指南,你应该已经完成了构建你的第一个 Docker 容器,并且运行了示例应用。

    你已经构建了你自己的镜像(images)。本部分的内容将会指导你如何对你的容器进行网络配置。

    使用默认网络来运行一个容器

    Docker 能够支持通过 network drivers 来使用网络的容器。在默认的情况下,Docker 为你提供了 2 个网络驱动: bridge 和 overlay 驱动。

    你也可以通过写一个网络驱动插件来创建你自己的网络驱动,但是这个属于比较高级的任务了。

    在任何完成安装的 Docker 中将会自动包含有下面 3 个网络驱动,你可以通过下面的命令来列表出来:

    $ docker network ls
    
    NETWORK ID          NAME                DRIVER
    18a2866682b8        none                null
    c288470c46f6        host                host
    7b369448dccb        bridge              bridge
    

    被命名 bridge 的网络是一个特殊的网络。除非你在运行的时候指定一个网络,否则 Docker 容器将会一直运行这个网络。尝试运行下面的命令:

    $ docker run -itd --name=networktest ubuntu
    
    74695c9cea6d9810718fddadc01a727a5dd3ce6a69d09752239736c030599741
    

    bridge1

    通过检查网络,可以非常容易的找到你容器的 IP 地址。

    $ docker network inspect bridge
    
    [
        {
            "Name": "bridge",
            "Id": "f7ab26d71dbd6f557852c7156ae0574bbf62c42f539b50c8ebde0f728a253b6f",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": [
                    {
                        "Subnet": "172.17.0.1/16",
                        "Gateway": "172.17.0.1"
                    }
                ]
            },
            "Internal": false,
            "Containers": {
                "3386a527aa08b37ea9232cbcace2d2458d49f44bb05a6b775fba7ddd40d8f92c": {
                    "Name": "networktest",
                    "EndpointID": "647c12443e91faf0fd508b6edfe59c30b642abb60dfab890b4bdccee38750bc1",
                    "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": "9001"
            },
            "Labels": {}
        }
    ]
    

    通过断开与容器的链接,你也可以将容器从网络中删除。

    如果要将容器从网络中删除的话,你需要同时提供网络名(network name)和容器名(container name)。

    你也可以使用容器 ID,但是使用容器名相对使用容器 ID 来说,更加快速。

    $ docker network disconnect bridge networktest
    

    尽管你可以将容器从一个网络中断开连接,但是你不能删除 Docker 内部构建的被命名为 bridge 的 bridge 网络。

    网络是将一个容器与其他容器独立开或者容器与其他网络独立开的最常规的方式。

    因此,当你有更多使用 Docker 经验的时候,可以尝试创建你自己的网络。

    https://www.ossez.com/t/docker/739

  • 相关阅读:
    面对复杂业务,if-else coder 如何升级?
    为什么StringBuilder是线程不安全的?
    Hashmap中文解释
    mysql 5.6 5.7 8.0新特性
    数据增强,扩充数据集
    神经网络参数优化器
    缓解过拟合
    损失函数
    神经网络的复杂度&指数衰减学习率&激活函数
    GRU&实例股价预测
  • 原文地址:https://www.cnblogs.com/huyuchengus/p/14054629.html
Copyright © 2011-2022 走看看