用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通物理机
请问下什么原因
因为每个container都是独立的,如果你想访问另一个container,你需要把host改成container的名字而不是用ip。也可以在创建container的时候设置network,将两个container的network设置成一样的,就可以通过localhost:port访问了
使用docker部署mysql 可以 使用 -v 映射端口出来提供外部主机访问 或者 在启动docker的时候定义一个 --network 网络类型
容器间通讯需要在同一network下。
docker network create {name}
docker network connect{net-name} {container-name}
默认的话,Docker的容器都在172.17.0.1/16这个网段
你可以看一个MySql的容器IP是多少,然后Web这边连接字符串修改到MySql的容器IP
而不是用主机的IP
sudo docker exec -it {containerid} bash
ip addr