美文网首页
docker网络管理命令

docker网络管理命令

作者: 凤落溪凰落地 | 来源:发表于2018-12-29 13:36 被阅读0次
docker网络管理命令如下:
  • docker network create
  • docker network connect
  • docker network ls
  • docker network rm
  • docker network disconnect
  • docker network inspect

创建网络:

默认创建的是bridge网络:

[root@docker01 ~]# docker network create simple-network
b3e3c58a844e486644e0bd44a67fc983532a36e854208e8256cbb0e164f50480
[root@docker01 ~]# docker network inspect simple-network
[
    {
        "Name": "simple-network",
        "Id":
"b3e3c58a844e486644e0bd44a67fc983532a36e854208e8256cbb0e164f50480",
        "Created": "2018-01-04T16:53:21.071813651+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.19.0.0/16",
                    "Gateway": "172.19.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]

不像bridge网络,直接可以创建。创建overlay网络需要一些条件:

  • 访问到一个键值存储。支持Consul,Etcd,ZooKeeper分布式键值存储
  • 与键值存储连接的主机集群。
  • 在swarm群集中的每个主机上正确配置了引擎的daemon。

支持overlay网络的docker选项:

  • ­­cluster­store
  • ­­cluster­store­opt
  • ­­cluster­advertise

当你创建了一个网络,默认会创建一个不重叠的子网,使用--subnet选项可以直接指定子
网络,在bridge网络中只可以指定一个子网络,而在overlay网络中支持多个子网络。
除了--subnet,还可以指定:--gateway,--ip-range,--aux-address选项。

1.png

要确保子网不会重叠,否则,网络会创建失败并返回错误。
创建自定义网络时,可以向驱动程序传递附加选项,bridge驱动接受以下选项:


2.png

例如:

[root@docker01 ~]# docker network create -o
"com.docker.network.bridge.host_binding_ipv4"="192.168.0.133" my-network
1e4f2931c9352a19127eb323b717c16c87187f0221f466b24892b1576174432c
[root@docker01 ~]# docker network inspect my-network
[
    {
        "Name": "my-network",
        "Id":
"1e4f2931c9352a19127eb323b717c16c87187f0221f466b24892b1576174432c",
        "Created": "2018-01-04T17:33:08.658600787+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.20.0.0/16",
                    "Gateway": "172.20.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.host_binding_ipv4": "192.168.0.133"
        },
        "Labels": {}
    }
]

启动一个容器并发布端口:可以看到绑定的地址


3.png

连接容器

可以连接已存在的容器到一个或者多个网络中。一个容器可以连接到多个不同网络驱动的网络中。
当连接一旦建立,容器便可以和其他的容器通讯,通过IP或者容器名称。
对于支持多主机连接的overlay网络或者自定义插件,连接到同一个多主机网络的不同主机上的容器,也可以用这种方式通信。

基本容器网络示例:
1、首先,创建和运行两个容器:container1和container2


4.png

2、创建一个用户自定义网络 isolated_nw,是bridge网络

root@docker01 ~]# docker network create ­d bridge ­­subnet
172.25.0.0/16 ­­gateway 172.25.0.1 isolated_nw
59474e3fd39230f8998b2fbc7d6b7b488f6f9df0e56f6ae8f79c3c2c34ee1931

3、连接continer2容器到这个新创建的网络,并inspect这个网络,检查网络的连接

[root@docker01 ~]# docker network connect isolated_nw continer2
[root@docker01 ~]# docker network inspect isolated_nw
[
    {
        "Name": "isolated_nw",
        "Id":
"59474e3fd39230f8998b2fbc7d6b7b488f6f9df0e56f6ae8f79c3c2c34ee1931",
        "Created": "2018-01-05T09:06:18.420782438+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.25.0.0/16",
                    "Gateway": "172.25.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
           
"3243b2b7cb47fa1820582b3a9c44a4b20c4c11646facadff8ba6c70fcc876294": {
                "Name": "continer2",
                "EndpointID":
"9cb56361727e22f16177a7246196d9a33e3bc9642b403b8c254cc2d1aac9bd53",
                "MacAddress": "02:42:ac:19:00:02",
                "IPv4Address": "172.25.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

[root@docker01 ~]#

4、创建容器continer3,并分配一个固定IP172.25.3.3

[root@docker01 ~]# docker run -itd --name continer3 --network isolated_nw --
ip=172.25.3.3 centos7:new002 /bin/bash
f71f8258f80f380287a29f2ecc45fd995f6a4f424cbdcefd7dbb5252d48beadd

使用--ip和--ip6参数指定的IP地址,如果是用户定义的网络,在容器重启的时候,会保持有效,如果不是用户定义的网络,分配的IP地址是不会保持有效的。

5、检查continer3的网络资源:

[root@docker01 ~]# docker inspect --format=''  continer3
5.png

6、检查continer2容器的网络资源:

[root@docker01 ~]# docker inspect --format=''  continer2 | python -m json.tool
6.png

现在continer2属于两个网络:

7.png

7、进入容器continer2,并尝试和continer3及continer1通信


8.png

有两个IP,网关是连接到的第一个网络的网关
docker内嵌了DNS服务,意思是链接到同一个网络的容器,可以使用容器名进行通信。


9.png
默认的bridge网络是不可以使用名称通信的,IP可以
10.png
如果想让默认网络中,也可以使用容器名进行通信呢?

使用link的特性。这是唯一推荐使用link的场景。应该使用自定义的网络来替代它的。

在默认网络中使用link增加了一下特性:

  • 解析容器名到IP地址
  • 定义网络别名
    • --link=CONTAINER-NAME:ALIAS
  • 增强网络连接的安全性
  • 环境变量注入
    例如:
[root@docker01 ~]# docker run -itd --name container4 --link container1:c1
centos7:new002  /bin/bash
11.png

取消连接:

[root@docker01 ~]# docker network disconnect isolated_nw continer2
[root@docker01 ~]# docker network disconnect isolated_nw continer3

删除网络:


13.png

相关文章

  • docker 命令

    一、Docker的基础命令 二、docker网络管理相关的命令: docker run 命令参数 三、docker...

  • docker网络管理命令

    docker网络管理命令如下: docker network create docker network conn...

  • 2020学习规划

    docker 已入门,会使用管理命令,网络待加强,命令含义待加强 进阶: compose swarm 了解,待加强...

  • Docker常用命令

    常用命令: 镜像管理: 容器管理: docker build(docker build命令用于从Dockerfil...

  • docker 笔记

    docker常用管理命令(上)docker常用管理命令(下) 使用image创建container并进入交互模式,...

  • Docker Compose 的安装

    Docker Compose 能够在一个主机上创建出相互隔离的网络,通过命令行管理多个 Docker 容器,快速启...

  • Docker基础操作

    Docker部署 Docker安装 镜像加速 Docker 基础命令 Docker镜像管理 搜索镜像docker ...

  • 【02】docker 命令

    镜像管理 着重说明docker run  命令: 容器管理 • 监控命令

  • 这些docker基本命令你知道吗?

    docker基本命令 docker的命令分为 大类: 1、容器生命周期管理: docker run < image...

  • Docker常用命令

    docker常用命令 命令介绍 管理命令: container 管理容器 image 管理镜像 netwo...

网友评论

      本文标题:docker网络管理命令

      本文链接:https://www.haomeiwen.com/subject/cqvulqtx.html