docker命令之link
1.新建两台容器,第二台(busybox_2)link到第一台(busybox_1)
[root@localhost ~]# docker run -d -it --name busybox_1 busybox /bin/sh -c "while true;do sleep 3600;done"
8240c9aa04e3b5653c6747ae13a4e4478eb8e62060e4c8644492dbbf5c71c734
[root@localhost ~]# docker run -d -it --name busybox_2 --link busybox_1 busybox /bin/sh -c "while true;do sleep 3600;done"
9131353a28de9c0816121f0960644275d789e4dfe136a00cff6b0d9850b35c7e
2.获取两台容器的IP地址
[root@localhost ~]# docker exec -it busybox_1 ip a|grep 172
inet 172.17.0.2/16 scope global eth0
[root@localhost ~]# docker exec -it busybox_2 ip a|grep 172
inet 172.17.0.3/16 scope global eth0
3.分别在两台容器上通过ip和容器名称ping另一台容器,注意查看结果
[root@localhost ~]# docker exec -it busybox_1 ping -c 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.079 ms
[root@localhost ~]# docker exec -it busybox_1 ping -c buxybox_2
ping: bad address 'buxybox_2' [root@localhost ~]# docker exec -it busybox_2 ping -c 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.089 ms
[root@localhost ~]# docker exec -it busybox_2 ping -c busybox_1
PING busybox_1 (172.17.0.2): data bytes
bytes from 172.17.0.2: seq= ttl= time=0.088 ms
4.删除被link的容器,查看结果
[root@localhost ~]# docker rm -f busybox_1
busybox_1
[root@localhost ~]# docker exec -it busybox_2 ping busybox_1
Error response from daemon: Cannot link to a non running container: /busybox_1 AS /busybox_2/busybox_1
[root@localhost ~]# docker run -d -it --name busybox_1 busybox /bin/sh -c "while true;do sleep 3600;done"
74088ba7c2f9db67a607185d9a0b2157098036c1a2ca7b200c41ec04685f1210
[root@localhost ~]# docker exec -it busybox_2 ip a
Error response from daemon: Cannot link to a non running container: /busybox_1 AS /busybox_2/busybox_1
5.查看当前docker 可使用网络
[root@localhost ~]# docker network ls #如果容器没有显示指定使用的网络,默认使用bridge
NETWORK ID NAME DRIVER SCOPE
fa30a4d17b5b bridge bridge local
a03aaca35833 host host local
d85c50eb947c none null local
6.手动创建一个docker网络
[root@localhost ~]# docker network create -d bridge my_bridge #-d 指定类型 my_bridge为名称
652b4f64a3bc7691e8b65a8a7508e83e7585cde9d698438bc971a3c63bd6d62d
7.验证是否创建成功
[root@localhost ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
fa30a4d17b5b bridge bridge local
a03aaca35833 host host local
652b4f64a3bc my_bridge bridge local
d85c50eb947c none null local [root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br-652b4f64a3bc .0242a1ad4372 no #652...即my_bridge的ID,当前没有被连接
docker0 .024223c091f9 no veth54f7336
veth7ca4b55
8.新建一个容器,使用我们刚刚新建的my_bridge网络
[root@localhost ~]# docker run -d -it --name busybox_3 --network my_bridge busybox /bin/sh -c "while true;do sleep 3600;done"
749b800c24708539fefbc462bbf4463fde5cdbd7b6e8787383e586342fc2977b #使用 --network指定网络
9.验证刚刚的操作
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br-652b4f64a3bc .0242a1ad4372 no veth72d2357
docker0 .024223c091f9 no veth54f7336
veth7ca4b55 [root@localhost ~]# docker network inspect my_bridge
......
"Containers": {
"749b800c24708539fefbc462bbf4463fde5cdbd7b6e8787383e586342fc2977b": {
"Name": "busybox_3", #名称
"EndpointID": "22aac7ec5076908c40ebc8175bd307b6174b94f709240743d36540fe90220c1b",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16", #IP地址,发现其网段为18,与之前创建的容器网段不同
"IPv6Address": ""
}
},
......
10.将已存在的容器加入my_bridge网络并验证
[root@localhost ~]# docker network connect my_bridge busybox_2
[root@localhost ~]# docker network inspect my_bridge
......
"Containers": {
"749b800c24708539fefbc462bbf4463fde5cdbd7b6e8787383e586342fc2977b": {
"Name": "busybox_3",
"EndpointID": "22aac7ec5076908c40ebc8175bd307b6174b94f709240743d36540fe90220c1b",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
},
"9131353a28de9c0816121f0960644275d789e4dfe136a00cff6b0d9850b35c7e": {
"Name": "busybox_2",
"EndpointID": "e2fbd16d9a6ba1495a4e9907153e0dae619f172c70f890382b1007d0f4d7e6a6",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
}
},
...... [root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br-652b4f64a3bc .0242a1ad4372 no veth72d2357
veth798a93a
docker0 .024223c091f9 no veth54f7336
veth7ca4b55
11.基于当前的网络状态,测试各容器之间的网络通信状态,主要观察结果
当前的容器名称及IP为:
name:busybox_1 IP:172.17.0.2/(bridge)
name:busybox_2 IP:172.17.0.3/(bridge) 172.18.0.3/(my_bridge)
name:busybox_3 IP:172.18.0.2/(my_bridge) 在busybox_1上:
[root@localhost ~]# docker exec -it busybox_1 ping -c 172.17.0.3
[root@localhost ~]# docker exec -it busybox_1 ping -c 172.18.0.3
[root@localhost ~]# docker exec -it busybox_1 ping -c 172.18.0.2
[root@localhost ~]# docker exec -it busybox_1 ping -c busybox_2
[root@localhost ~]# docker exec -it busybox_1 ping -c busybox_3 在busybox_2上:
[root@localhost ~]# docker exec -it busybox_2 ping -c 172.17.0.2
[root@localhost ~]# docker exec -it busybox_2 ping -c 172.18.0.2
[root@localhost ~]# docker exec -it busybox_2 ping -c busybox_1
[root@localhost ~]# docker exec -it busybox_2 ping -c busybox_3 在busybox_3上:
[root@localhost ~]# docker exec -it busybox_3 ping -c 172.17.0.2
[root@localhost ~]# docker exec -it busybox_3 ping -c 172.17.0.3
[root@localhost ~]# docker exec -it busybox_3 ping -c 172.18.0.3
[root@localhost ~]# docker exec -it busybox_3 ping -c busybox_1
[root@localhost ~]# docker exec -it busybox_3 ping -c busybox_2
12.新建一个容器,使用my_bridge网络
[root@localhost ~]# docker run -d -it --name busybox_4 --network my_bridge busybox /bin/sh -c "while true;do sleep 3600;done"
c831ad0d4f25ab7b8d44904ea9cb9c1cff3ddb842043b070dbabe8be1df38d75
13.测试最后新建容器与其他容器的网络通信
[root@localhost ~]# docker exec -it busybox_4 ping -c 172.18.0.1
[root@localhost ~]# docker exec -it busybox_4 ping -c 172.18.0.2
[root@localhost ~]# docker exec -it busybox_4 ping -c 172.18.0.3
[root@localhost ~]# docker exec -it busybox_4 ping -c busybox_1
[root@localhost ~]# docker exec -it busybox_4 ping -c busybox_2
[root@localhost ~]# docker exec -it busybox_4 ping -c busybox_3
总结:
1.当我们新建容器时,如果没有显示指定其使用的网络,那么默认会使用bridge网络
2.当一个容器link到另一个容器时,该容器可以通过IP或容器名称访问被link的容器,而被link容器可以通过IP访问该容器,但是无法通过容器名称访问
3.当被link的容器被删除时,创建link的容器也无法正常使用
4.如果两个容器被加入到我们手动创建的网络时,那么该网络内的容器相互直接可以通过IP和名称同时访问。
docker命令之link的更多相关文章
- Docker命令学习
今天更换腾讯云系统的时候发现了多了个CoreOS,据说是专门运行docker的轻量系统,顺便学习一下docker命令. 1. docker version 显示 Docker 版本信息. 2. doc ...
- 你可能不知道的 docker 命令的奇淫怪巧
你可能不知道的 docker 命令的奇淫怪巧 Intro 介绍并收录一些可能会用到的一些简单实用却很少有人用的 docker 命令 dangling images build 自己的 docker 镜 ...
- docker 命令部分
本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: 看一个变迁图 看一个变迁图 ...
- docker命令集锦
sudo docker image ls 查看有哪些image镜像sudo docker run hello 运行image 删除全部containerdocker rm $(docker conta ...
- docker命令总结(二)
上次只是给大家把命令的作用以及简单使用列出来了(大家可以查看:docker命令总结(一)),那这篇文章会详细介绍每条命令的参数,命令比较多建议大家使用搜索,进行查看 search docker sea ...
- Docker命令详解
Docker命令详解 最近学习Docker,将docker所有命令实验了一番,特整理如下: # docker --help Usage: docker [OPTIONS] COMMAND [arg ...
- Docker入门教程(六)另外的15个Docker命令
Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...
- 安装Docker和下载images镜像和常用Docker命令
我的是centos7,也会6的方法: $sudo yum install docker 直接yum安装contos7使用centos6.5先获取epel源并 启动Docker,并注册开机服务 [roo ...
- docker命令和后台参数
Docker官方为了让用户快速了解Docker,提供了一个 交互式教程 ,旨在帮助用户掌握Docker命令行的使用方法. Docker 命令行 下面对Docker的命令清单进行简单的介绍,详细内容在后 ...
随机推荐
- oracle学习笔记(二十三)——JDBC调用存储过程以及批量操作
jdbc调用存储过程 使用并获得out模式的参数返回值 //存储过程为sum_sal(deptno department.deptno%type,sum in out number) Callable ...
- 练手WPF(二)——2048游戏的简易实现(上)
1.创建游戏界面编辑MainWindow.xaml,修改代码如下: <Window.Resources> <Style TargetType="Label"> ...
- ReSharper激活方法
激活方式选择License Keys. 激活码: MTW881U3Z5-eyJsaWNlbnNlSWQiOiJNVFc4ODFVM1o1IiwibGljZW5zZWVOYW1lIjoiTnNzIElt ...
- Java生鲜电商平台-促销架构以及秒杀解决方案实战
Java生鲜电商平台-促销架构以及秒杀解决方案实战 背景:随着这几年的电商的大热,我们经常看到一些商家为了促销和快速收益,纷纷推出了秒杀活动.不管是日常的超市里面的促销,明星演唱会门票售卖,还是春节订 ...
- Kali 无线网络
WiFi——必备的一个东西: AP:这是无线用户接入到互联网的设备 ESSID:可以用于无限局域网中的多个AP中 BSSID:每个AP的唯一标识符 SSID:网络名称 Channels Wi-Fi可以 ...
- PL/SQL编写的SQL语句插入SqlPlus时,报错 PLS-00302
最近刚开始用PL/SQL,然后发现写SQL语句时,运行的时候,会对表中的字段报错. 好像是对字段的使用有问题 原来写的错误代码大概像这样 DECLARE xuehao XSB.id% TYPE; BE ...
- requests---requests发送xml数据类型
上一篇简单的介绍了post常见的4种数据类型,今天我们一起学习通过requests发送xml数据类型 xml数据类型 下方数据为xml数据,我们就通过这段数据学习如果通过requests发送xml数据 ...
- grep: /usr/include/php/main/php.h: No such file or directory
异常 grep: /usr/include/php/main/php.h: No such file or directory grep: /usr/include/php/Zend/zend_mod ...
- 泛型T
作用: 使用泛型类型可以最大限度地重用代码.保护类型的安全以及提高性能. 泛型最常见的用途是创建集合类 1.性能:如List<object> 与 List<T> 将一个 int ...
- 七,专著研读(Logistic回归)
七,专著研读(Logistic回归) 分类:k-近邻算法,决策树,朴素贝叶斯,Logistic回归,支持向量机,AdaBoost算法. 运用 k-近邻算法,使用距离计算来实现分类 决策树,构建直观的树 ...