首页 新闻 会员 周边

Docker内访问不到其它的docker

0
悬赏园豆:20 [已解决问题] 解决于 2021-08-30 10:53

用docker部署了一个mysql,用我的机器可以访问,用docker继续部署一个web,web内访问不到mysql,提示 Unable to connect to any of the specified MySQL hosts

mysql连接字符串 Server=192.168.113.1;Port=12456;Database=thd;Uid=root;Pwd=123456;SslMode = none;
192.168.113.1 为物理机地址
在web容器内,可以ping通物理机

请问下什么原因

越天的主页 越天 | 初学一级 | 园豆:8
提问于:2020-11-07 14:42
< >
分享
最佳答案
0

因为每个container都是独立的,如果你想访问另一个container,你需要把host改成container的名字而不是用ip。也可以在创建container的时候设置network,将两个container的network设置成一样的,就可以通过localhost:port访问了

收获园豆:20
sunzhengbo | 初学一级 |园豆:164 | 2020-11-07 16:27
其他回答(3)
0

使用docker部署mysql 可以 使用 -v 映射端口出来提供外部主机访问 或者 在启动docker的时候定义一个 --network 网络类型

背锅的Mike | 园豆:322 (菜鸟二级) | 2020-11-07 15:53
0

容器间通讯需要在同一network下。

  • 创建一个network。docker network create {name}
  • 相关容器加入network。docker network connect{net-name} {container-name}
gt1987 | 园豆:1150 (小虾三级) | 2020-11-09 09:54
0

默认的话,Docker的容器都在172.17.0.1/16这个网段
你可以看一个MySql的容器IP是多少,然后Web这边连接字符串修改到MySql的容器IP
而不是用主机的IP

进入窗口BASH

sudo docker exec -it {containerid} bash

查看容器IP

ip addr

Giant150 | 园豆:1165 (小虾三级) | 2020-11-12 13:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册