Docker容器跨主机互联

当两个Docker容器在同一主机时,可以通过--link命令让两者直接互相访问。

如果要跨主机实现容器互联,则往往需要容器知道其他物理主机的IP地址

利用Ambassador容器机制,可以让互联的容器无需知道所在物理主机的IP地址即可互联

Ambassador容器也是一种Docker容器,它在内部提供了转发服务

以redis镜像为例

目标

(redis客户端) --> (redis-ambassador) ---network---> (redis-ambassador) --> (redis服务端)

操作

(1)首先在服务端主机上创建一个服务端容器redis-server:

$ sudo docker run -d -name redis-server crosbymichael/redis

(2)创建一个服务端Ambassador容器redis_ambassador,连接到服务端容器redis-server,并监听本地的6379端口:

$ sudo docker run -d -link redis-server:redis -name redis_ambassador -p 6379:6379 svendowideit/ambassador

(3)在客户端主机上创建客户端Ambassador容器,告诉它服务端物理主机的监听地址是tcp://x.x.x.x:6379,将本地收集到6379端口的流量转发到服务端物理主机:

$ sudo docker run -d -name redis_ambassador -expose 6379 -e REDIS_PORT_6379_TCP=tcp://x.x.x.x:6379 svendowideit/ambassador

(4)最后,创建一个客户端容器,进行测试,默认访问6379端口实际上是访问的服务端容器内的redis应用:

$ sudo docker run -i -t -rm -link redis_ambassador:redis relateiq/redis-cli

redis 172.17.0.160:6379> ping

PONG

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2015-07-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LuckQI

linux命令下~docker的使用学习

1133
来自专栏快乐八哥

Docker Hub工作流程-Docker for Web Developers(6)

在Github上创建项目仓库 和创建其他Github项目一样,在Github创建一个仓库,然后在仓库里面增加一个dockerfile,然后提交并推送到Githu...

2117
来自专栏Java帮帮-微信公众号-技术文章全总结

三个技巧,将Docker镜像体积减小90%【面试+工作】

在构建Docker容器时,应该尽量想办法获得体积更小的镜像,因为传输和部署体积较小的镜像速度更快。

1311
来自专栏北京马哥教育

架构师分享 Docker 新手入门完全指南

下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。

1723
来自专栏编程坑太多

『中级篇』容器的操作(20)

1153
来自专栏緣來來來

Mac下Docker容器的安装和简单使用

https://store.docker.com/editions/community/docker-ce-desktop-mac

1.9K2
来自专栏木子昭的博客

从零搭建docker私有仓库

891
来自专栏IT米粉

Docker 常用基础命令

最近开始进攻Docker,已经将自己的电脑上的服务端软件逐一移到Docker上,包括tomcat、nginx、rabbitmq、redis等,并通过简单的脚本进...

39412
来自专栏编程坑太多

『中级篇』构建自己的Docker镜像(16)

1585
来自专栏宝哥的专栏

Docker系列学习文章 - docker镜像基本操作(五)

| 导语上一篇文章我们讲解了如何简单运行一个Nginx、Mysql、Redis容器服务。我们运行的很顺利,因为我们就用了一条命令就搞定了。确实,docker就是...

1.5K26

扫码关注云+社区

领取腾讯云代金券