Docker容器跨主机互联

时间:2022-05-06
本文章向大家介绍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