container的name和ID一样,也是唯一的,当不知道container的IP时,可以用name替代,但需要先配置link

下面创建两个container 时,未配置link所以ping name 不通。

[root@localhost ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f81ab807503c busybox "/bin/sh -c 'while t…" hours ago Up hours test2
cba625871070 busybox "/bin/sh -c 'while t…" hours ago Up hours test1
[root@localhost ~]# docker exec test1 ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu qdisc noqueue
link/ether ::ac::: brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/ brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@localhost ~]# docker exec test2 ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
: eth0@if21: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu qdisc noqueue
link/ether ::ac::: brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/ brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@localhost ~]# docker exec test1 ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3): data bytes
bytes from 172.17.0.3: seq= ttl= time=0.074 ms
bytes from 172.17.0.3: seq= ttl= time=0.114 ms
^C
[root@localhost ~]# docker exec test1 ping test2 ^C
[root@localhost ~]# docker exec test2 ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2): data bytes
bytes from 172.17.0.2: seq= ttl= time=0.077 ms
bytes from 172.17.0.2: seq= ttl= time=0.100 ms
^C
[root@localhost ~]# docker exec test2 ping test1 ^C
[root@localhost ~]#

把test2删了重下创建,并指定link,link具有单向性

[root@localhost ~]# docker stop test2
test2
[root@localhost ~]# docker rm test2
test2
[root@localhost ~]#
[root@localhost ~]# docker run --name test2 -d --link test1 busybox /bin/sh -c "while true;do sleep 3600;done"
WARNING: IPv4 forwarding is disabled. Networking will not work.
68789fa4dc47ce821337c64898c11693e24dcc47ff06641e89feabd9a7ffe21d
[root@localhost ~]# docker exec test2 ping test1
PING test1 (172.17.0.2): data bytes
bytes from 172.17.0.2: seq= ttl= time=0.073 ms
bytes from 172.17.0.2: seq= ttl= time=0.071 ms
bytes from 172.17.0.2: seq= ttl= time=0.071 ms
^C
[root@localhost ~]# docker exec test1 ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
: eth0@if19: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu qdisc noqueue
link/ether ::ac::: brd ff:ff:ff:ff:ff:ff
inet 172.17.0.2/ brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@localhost ~]# docker exec test2 ping 172.17.0.2
PING 172.17.0.2 (172.17.0.2): data bytes
bytes from 172.17.0.2: seq= ttl= time=0.076 ms
bytes from 172.17.0.2: seq= ttl= time=0.161 ms
^C
[root@localhost ~]# docker exec test2 ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
: eth0@if23: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu qdisc noqueue
link/ether ::ac::: brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/ brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@localhost ~]# docker exec test1 ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3): data bytes
bytes from 172.17.0.3: seq= ttl= time=0.087 ms
bytes from 172.17.0.3: seq= ttl= time=0.085 ms
^C
[root@localhost ~]# docker exec test1 ping test2 ^C
[root@localhost ~]#

创建bridge

[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
4e8172ef8e01 bridge bridge local
9e8c9ce3e33b host host local
6d01f937585b none null local
[root@localhost ~]# docker network create -d bridge my-bridge
b190bd600feb9ab1293e882b4b5c5b828ab4dda1215fd25e9a1921ac8e2f2f07
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
4e8172ef8e01 bridge bridge local
9e8c9ce3e33b host host local
b190bd600feb my-bridge bridge local
6d01f937585b none null local
[root@localhost ~]#

create container 并指定docker network

[root@localhost ~]# brctl show #br-b190bd600feb即刚才create的my-bridge
bridge name bridge id STP enabled interfaces
br-b190bd600feb .0242e6e2a884 no
docker0 .0242e850c76c no veth59c00fa
vethfdefc77
virbr0 .525400105abe yes virbr0-nic
[root@localhost ~]# docker run -d --name test3 --network my-bridge busybox /bin/sh -c "while true;do sleep 3600;done" #增加network参数
WARNING: IPv4 forwarding is disabled. Networking will not work.
cec10f0cd32dc6c059bf29173572a34d0d41c2ff5602d0b8ccac0032a4ac2911
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br-b190bd600feb .0242e6e2a884 no veth75fc0ca
docker0 .0242e850c76c no veth59c00fa
vethfdefc77
virbr0 .525400105abe yes virbr0-nic
[root@localhost ~]#

再create container 网络连接my-bridge

[root@localhost ~]# docker run -d --name test4 --network my-bridge busybox /bin/sh -c "while true;do sleep 3600;done"
WARNING: IPv4 forwarding is disabled. Networking will not work.
19216c85489ee71d68bff33ff1ce64a6aff4f035e91659acd08ec9349e3440f3
[root@localhost ~]# docker network inspect my-bridge
[
{
"Name": "my-bridge",
"Id": "b190bd600feb9ab1293e882b4b5c5b828ab4dda1215fd25e9a1921ac8e2f2f07",
"Created": "2019-07-18T20:11:48.739837987-07:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"19216c85489ee71d68bff33ff1ce64a6aff4f035e91659acd08ec9349e3440f3": {
"Name": "test4",
"EndpointID": "9411999854b328be4ad2362a38967f770635bfda8cbf34190e0a61fad83bd815",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"cec10f0cd32dc6c059bf29173572a34d0d41c2ff5602d0b8ccac0032a4ac2911": {
"Name": "test3",
"EndpointID": "e6470a84504340d4668c0c66b6c4d068898ac9c177e0caf51d8869198349f84a",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
[root@localhost ~]#

同个bridge同网段,能ping通,不同bridge不同网段,不能ping通

[root@localhost ~]# docker exec test3 ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
: eth0@if26: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu qdisc noqueue
link/ether ::ac::: brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/ brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@localhost ~]# docker exec test4 ip a
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
: eth0@if28: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu qdisc noqueue
link/ether ::ac::: brd ff:ff:ff:ff:ff:ff
inet 172.18.0.3/ brd 172.18.255.255 scope global eth0
valid_lft forever preferred_lft forever
[root@localhost ~]# docker exec test3 ping 172.18.0.3
PING 172.18.0.3 (172.18.0.3): data bytes
bytes from 172.18.0.3: seq= ttl= time=0.077 ms
bytes from 172.18.0.3: seq= ttl= time=0.138 ms
^C
[root@localhost ~]#
[root@localhost ~]# docker exec test3 ping 172.17.0.3 ^C
[root@localhost ~]#

如果container是在用户自定义的bridge上,则默认是link的

[root@localhost ~]# docker exec test3 ping test4
PING test4 (172.18.0.3): data bytes
bytes from 172.18.0.3: seq= ttl= time=0.042 ms
bytes from 172.18.0.3: seq= ttl= time=0.149 ms
^C
[root@localhost ~]# docker exec test4 ping test3
PING test3 (172.18.0.2): data bytes
bytes from 172.18.0.2: seq= ttl= time=0.060 ms
bytes from 172.18.0.2: seq= ttl= time=0.065 ms
^C
[root@localhost ~]#

如果把别的bridge也连接到用户创建的bridge上,那也是默认link上的

[root@localhost ~]# docker network connect my-bridge test1
[root@localhost ~]# docker network inspect
bridge host my-bridge none
[root@localhost ~]# docker network inspect my-bridge
[
{
"Name": "my-bridge",
"Id": "b190bd600feb9ab1293e882b4b5c5b828ab4dda1215fd25e9a1921ac8e2f2f07",
"Created": "2019-07-18T20:11:48.739837987-07:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"19216c85489ee71d68bff33ff1ce64a6aff4f035e91659acd08ec9349e3440f3": {
"Name": "test4",
"EndpointID": "9411999854b328be4ad2362a38967f770635bfda8cbf34190e0a61fad83bd815",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"cba62587107007983d45a4383598dbec18a37d33e415f2325572e8f98f36a32a": {
"Name": "test1",
"EndpointID": "2b5c94ee7d8f5c76ae531e023190528e16cf18f3291298610f3b601511130c32",
"MacAddress": "02:42:ac:12:00:04",
"IPv4Address": "172.18.0.4/16",
"IPv6Address": ""
},
"cec10f0cd32dc6c059bf29173572a34d0d41c2ff5602d0b8ccac0032a4ac2911": {
"Name": "test3",
"EndpointID": "e6470a84504340d4668c0c66b6c4d068898ac9c177e0caf51d8869198349f84a",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
[root@localhost ~]# docker exec test4 ping test1
PING test1 (172.18.0.4): data bytes
bytes from 172.18.0.4: seq= ttl= time=0.082 ms
bytes from 172.18.0.4: seq= ttl= time=0.170 ms
^C
[root@localhost ~]#

docker--container之间的link,bridge create的更多相关文章

  1. 分布式高级(十三)Docker Container之间的数据共享

    sudo docker run -it -v /usr/lib:/usr/lib/dbdata --name dbcontainer-192.168.1.184 ubuntu:14.04 sudo d ...

  2. docker images之间相互通信 link

    同一个host上的两个container 首先启动一个nginx. container起名叫netease_nginx docker run --detach --name netease_nginx ...

  3. bridge br0 docker 网络问题 Docker Container与Docker Host

    Docker学习笔记:Docker 网络配置 - docker ppt - docker中文社区http://www.docker.org.cn/dockerppt/111.html Bridge t ...

  4. docker container(容器)

    docker 容器 Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用 容器是从镜像创建的应用运行实例.它可以启动,开始,停止,删除,而这些容器都是彼此相互隔离,互不可见的. ...

  5. Docker源码分析(八):Docker Container网络(下)

    1.Docker Client配置容器网络模式 Docker目前支持4种网络模式,分别是bridge.host.container.none,Docker开发者可以根据自己的需求来确定最适合自己应用场 ...

  6. Docker container network configuration

    http://xmodulo.com/networking-between-docker-containers.html How to set up networking between Docker ...

  7. Docker: docker container常用命令实战(2)-数据持久化

    应用服务是在容器中运行的,容器随时会被删除,如果是个mysql容器呢?数据存储在容器里,容器删除了,数据也没了,那就是个噩梦. 所以一些数据是需要存储在容器之外的,可以是宿主机,可以是网络存储位置上, ...

  8. Docker: docker container常用命令实战

    容器管理,容器常用选项 选项 描述 -i, –interactive 交互式 -t, –tty 分配一个伪终端 -d, –detach 运行容器到后台 -e, –env 设置环境变量 -p, –pub ...

  9. Docker源码分析(七):Docker Container网络 (上)

    1.前言(什么是Docker Container) 如今,Docker技术大行其道,大家在尝试以及玩转Docker的同时,肯定离不开一个概念,那就是“容器”或者“Docker Container”.那 ...

随机推荐

  1. Address already in use : connect

    Address already in use : connect 错误以及处理 项目中有过手写并发测试,在长时间的并发测试(超过20秒,美妙超过2000)的情况下出现了以上错误 处理方法如下(抄的) ...

  2. 纯手动拉WebPanel页面保存出现错误提示 "error:字符文本中的字符太多"

    环境为.Net 没有使用WorkWithPlus 纯手拉WebFrom页面  问题出现情况如下:在拉页面的过程中拖了3个Value类型的变量到Table中 页面如下 但是在我保存的时候 发现提示如下错 ...

  3. proc - 进程信息伪文件系统

    描述 /proc 是一个伪文件系统, 被用作内核数据结构的接口, 而不仅仅是解释说明 /dev/kmem. /proc里的大多数文件都是只读的, 但也可以通过写一些文件来改变内核变量. 下面对整个 / ...

  4. Django——Ajax相关

    Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输的数 ...

  5. Codeforces Round #454 (Div. 1) CodeForces 906D Power Tower (欧拉降幂)

    题目链接:http://codeforces.com/contest/906/problem/D 题目大意:给定n个整数w[1],w[2],……,w[n],和一个数m,然后有q个询问,每个询问给出一个 ...

  6. (ACM模板)不定长数组vector

    #include<iostream> #include<cstdio> #include<vector> #include<algorithm> usi ...

  7. Sass--混合宏 VS 继承 VS 占位符

    什么时候用混合宏,什么时候用继承,什么时候使用占位符?”其实他们各有各的优点与缺点,先来看看他们使用效果: a) Sass 中的混合宏使用 总结:编译出来的 CSS 清晰告诉了大家,他不会自动合并相同 ...

  8. centos 6.5 解压 tar.gz

    只查看 tar.gz 文件内容而不解压 tar -tvf filename.tar.gz 解压为 tar 文件 gzip -d filename.tar.gz 解压为文件或目录 tar xvf fil ...

  9. ubuntu下安装pyaudio

    首先安装依赖库,不安装依赖库会安装失败: sudo apt-get install libasound-dev portaudio19-dev libportaudio2 libportaudiocp ...

  10. ssm框架错误展示-1

    1.xmlParse错误+找不到bean ,一般会出现在导入别的地方拷来的项目时发生,报了以下错误: 查看自己的项目配置文件,发现spring的配置文件和sql映射xml文件都有个黄颜色的感叹号,鼠标 ...