Docker容器之间互相访问

avatar 2020年01月30日22:30:01 6 7672 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
本文介绍一个 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
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

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

  

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