Docker - 容器互联
容器互联
通过docker run命令的--link参数可以让容器之间通过连接(linking)系统进行交互。
参数格式: --link name:alias ,name是要链接的容器名称, alias是此连接的别名。
容器的连接系统会依据容器的名称,创建容器之间一个安全隧道,在启动容器的时候不使用-p和-P参数(不用映射端口到宿主主机),从而避免了暴露端口到外部网络。
通过docker run命令的--name参数来自定义容器名称(容器的名称是唯一的)。
通过docker ps命令结果的NAMES部分,查看容器名称。
Docker通过环境变量为容器公开连接信息,还添加host信息到父容器的/etc/hosts文件。
用户可以链接多个父容器到子容器。
示例
[root@CentOS-7 ~]# docker run -d --name nginx-node nginx
fc94ef26e3ab354db09323037f9a5119b18b48b8ca8c0f353ce3d3408230456d
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker run -itd --name centos-node --link nginx-node:samplelink centos
b5f56401c44d7b41f060e603b0a98309a0e996ffa66a0c177edee13364820f57
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
b5f56401c44d        centos              "/bin/bash"              4 seconds ago       Up 3 seconds                            centos-node
fc94ef26e3ab        nginx               "nginx -g 'daemon off"   23 seconds ago      Up 22 seconds       80/tcp, 443/tcp     nginx-node
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker inspect --format "{{ .NetworkSettings.IPAddress }}" nginx-node
172.17.0.2
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker inspect --format "{{ .NetworkSettings.IPAddress }}" centos-node
172.17.0.3
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker exec -it nginx-node env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=fc94ef26e3ab
NGINX_VERSION=1.11.13-1~jessie
HOME=/root
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker exec -it centos-node env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b5f56401c44d
TERM=xterm
SAMPLELINK_PORT=tcp://172.17.0.2:80
SAMPLELINK_PORT_80_TCP=tcp://172.17.0.2:80
SAMPLELINK_PORT_80_TCP_ADDR=172.17.0.2
SAMPLELINK_PORT_80_TCP_PORT=80
SAMPLELINK_PORT_80_TCP_PROTO=tcp
SAMPLELINK_PORT_443_TCP=tcp://172.17.0.2:443
SAMPLELINK_PORT_443_TCP_ADDR=172.17.0.2
SAMPLELINK_PORT_443_TCP_PORT=443
SAMPLELINK_PORT_443_TCP_PROTO=tcp
SAMPLELINK_NAME=/centos-node/samplelink
SAMPLELINK_ENV_NGINX_VERSION=1.11.13-1~jessie
HOME=/root
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker exec -it nginx-node cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	fc94ef26e3ab
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker exec -it centos-node cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	samplelink fc94ef26e3ab nginx-node
172.17.0.3	b5f56401c44d
[root@CentOS-7 ~]#
[root@CentOS-7 ~]# docker exec -it centos-node ping nginx-node
PING samplelink (172.17.0.2) 56(84) bytes of data.
64 bytes from samplelink (172.17.0.2): icmp_seq=1 ttl=64 time=0.339 ms
64 bytes from samplelink (172.17.0.2): icmp_seq=2 ttl=64 time=0.146 ms
^C
--- samplelink ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.146/0.242/0.339/0.097 ms
[root@CentOS-7 ~]#
												
											Docker - 容器互联的更多相关文章
- 使用weave实现跨主机docker容器互联
		
关于weave的原理不做细致的说明,如果想了解weave可以登陆官网:https://www.weave.works/ In this post,使用阿里云3台ECS服务器进行weave搭建,并测试搭 ...
 - 【Docker学习之六】Docker容器互联
		
环境 docker-ce-19.03.1-3.el7.x86_64 centos 7 一.基于Volume的互联就是-v参数,将本机文件或目录挂载到容器目录,实现文件目录共享 二.基于Link的互联 ...
 - Docker系列(四):Docker容器互联
		
基于Volume的互联 为什么需要Volume docker文件系统是分层的,下面的是全部是只读的,最上面的是可写层,容器中的进程如果修改了某个文件,比如修改了下层的某个文件,其实是在最顶层复制下层文 ...
 - docker容器互联,实现目录、服务共享
		
一.需求 docker使服务之间实现容器隔离,比如Javaweb项目前端.后端.数据库.数据库后台,分别把它们部署在不同的容器里面,实现隔离.但服务和服务之间也有互访的需求,这就涉及到容器网络和容器互 ...
 - Docker | 容器互联互通
		
上篇讲到创建自定义网络,我创建了 mynet 网络,并指定了网关和子网地址.在上篇结尾呢,我抛出了一个问题:其它网络下的容器可以直接访问mynet网络下的容器吗?今天就让我们一块看下怎么实现容器互联. ...
 - docker容器互联
		
link方式 http://blog.csdn.net/halcyonbaby/article/details/42112325 通过link方式创建容器,然后我们可以使用被link容器的别名进行访问 ...
 - docker容器互联 (.net core容器,mysql容器)
		
背景 有两个容器一个运行的.net core的项目 另一个运行的mysql的数据 并且这两个容器在同一个机子上(或者局域网),那么理论上.net core的项目去访问mysql是可以走内网的 但是容器 ...
 - 使用openvswitch实现跨主机docker容器互联
		
安装openvswitch的步骤请参考上一篇文章:http://www.cnblogs.com/xkops/p/5568167.html 环境:192.168.3.201 node1192.168.3 ...
 - Docker 数据卷与容器互联
		
Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...
 
随机推荐
- Ubuntu14.04上安装openGL
			
安装命令:sudo apt-get install build-essential sudo apt-get install libgl1-mesa-dev sudo apt-get install ...
 - php人员权限管理(RBAC)
			
在说权限管理前,应该先知道权限管理要有哪些功能: (1).用户只能访问,指定的控制器,指定的方法 (2).用户可以存在于多个用户组里 (3).用户组可以选择,指定的控制器,指定的方法 (4).可以添 ...
 - C#中ListView易错的方法
			
现在有一个ListView(lv1),有2列. ListViewItem lvi = new ListViewItem(); lvi.Text = "语文"; lvi.SubIte ...
 - Ceres Solver for android
			
最近开发中,需要对图片做一些处理与线性技术,这时就用到了Ceres Solver.如何把Ceres Solver集成到Android里呢? 官网给了一个解决方案,简洁明了: Downloa ...
 - go单元测试进阶篇
			
作者介绍:熊训德(英文名:Sundy),16年毕业于四川大学大学并加入腾讯.目前在腾讯云从事hadoop生态相关的云存储和计算等后台开发,喜欢并专注于研究大数据.虚拟化和人工智能等相关技术. 本文档说 ...
 - android 开机自启动实现
			
App的开机自启动可以通过注册广播接收器接收开机广播来实现,具体步骤如下: 1.创建 BroadcastReceiver 的派生类,并重写 onReceive() 函数: /** * Created ...
 - 05 Training versus Testing
			
train:A根据给定训练集D在H中选出g,使得Ein(g)约等于0: test:g在整个输入空间X上的表现要约等于在训练集D上的表现,使得Eout(g)约等于Ein(g). 如果|H|小,更易保证t ...
 - JavaScript Array 技巧
			
filter():返回该函数会返回true的项组成的数组 ,,,,]; var result = num.filter(function(item,index,array){ ); }) consol ...
 - 20分钟快速了解Redis
			
Redis可以说是目前最火爆的NoSQL数据库! 过去几年,Memcached很盛行,现在有很多公司已将Memcached替换成了Redis.当然,很多人替换并不清楚为什么,只是感觉不想让主流抛弃,这 ...
 - 在ASP.NET MVC 中获取当前URL、controller、action 、参数
			
URL的获取很简单,ASP.NET通用:[1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟目录名 ...