Docker容器之间互相访问

avatar 2020年01月30日22:30:01 0 1944 views
本文介绍一个 docker 容器如何访问另一个 docker 容器

如我这里写了一个名为 redis-demo 的 Springboot 项目,这个项目里需要访问 redis

配置文件 application.yml 部分内容如下
spring:
redis:
database: 0
host: 127.0.0.1
port: 6379

 

先创建一个名称为 redis-server 的容器
docker run --name redis-server -p 6379:6379 -d redis

然后用IDEA 的 docker 插件构建一个镜像,并创建容器
docker run --name redis-demo -p 8080:8080 -d  saysky/redis-demo

 

通过地址栏访问项目,发现报错,提示 Redis 连接失败

Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to 127.0.0.1:6379

 

解决办法


通过别名和--link解决

1、配置文件中的 ip 地址改成容器别名
spring:
redis:
database: 0
# host: 127.0.0.1
host: redis-server
port: 6379

 

2、创建 redis-demo 容器加 --link redis-server
docker run --name redis-demo -p 8080:8080 -d --link redis-server saysky/redis-demo

 

删除之前的容器和镜像,重新构建镜像和创建容器

测试,发现 redis-demo 项目能正常连接 redis

 

原因


我们发现添加 --link redis-server 后

会在该容器的 hosts 里自动添加一条记录

即将 redis-server 绑定到 172.17.0.3

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0