Docker中如何A容器访问B容器的服务

发布于 2020-08-31 23:18:41 阅读 26

最近沉迷于docker,所以想把自己博客的服务都通过docker进行部署,但是踩了个坑:我用docker起的api服务连接不了docker容器中的redis服务,又又又出现了dial tcp 127.0.0.1:6379: connect: connection refused的错误。

先把我的环境和配置和大家介绍下,我是通过docker启动了一个redis server,名字是myRedis,然后在我的api服务中,Redis的连接配置为127.0.0.1:6379

因为api的这个容器本地没有起这个6379这个端口,然后连接127.0.0.1:6379导致连接失败。所以我们将这redis的host:端口让api服务的容器访问到就可以了。

通过网上的搜索,只需要在run的时候带上link标签绑定redis,然后修改api的连接配置即可。

首先查看下redis的name是什么,在本机中,我的redis叫myRedis

然后修改api服务中redis配置,将redis的连接配置由127.0.0.1:6379改为redisAlis:6379,这个redisAlis后面会讲到,此时在运行api服务容器时,我们可以这样启动

docker run --rm --link myRedis:redisAlis --name myTestgo  testgo

其中--link myRedis:redisAlis是本次的重点,myRedis:redisAlis就是{docker容器中redis server的name(就是myRedis)}:{创建一个myRedis的别名,也就是Api服务的redis的配置的host}。这样启动,就不会报错了。