docker网络管理命令

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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容