如何从mysql-client Docker容器连接mysql-server容器?求最佳实践
Docker容器间MySQL连接的最佳实践
问题根源
你遇到的容器名解析失败,是因为默认的Docker bridge网络不提供容器名称的DNS解析能力,只有自定义Docker网络才支持容器名到IP的自动映射。
标准解决方案步骤
创建自定义Docker网络
docker network create mysql-network在自定义网络中启动MySQL服务端容器
docker run --name mysql_server --network mysql-network -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql在同一网络下启动客户端容器并连接
docker run -it --network mysql-network mysql mysql -hmysql_server -uroot -p输入预设密码
my-secret-pw即可完成连接。
为什么不推荐固定IP?
容器IP由Docker动态分配,当容器重启、网络重建时IP大概率会变更,依赖固定IP会导致连接稳定性问题,属于冗余且不可靠的方案。
关于废弃特性--link
早期Docker版本用--link实现容器间名称解析,但该特性已被官方废弃,自定义网络是当前的标准方案——它不仅支持双向DNS解析,还具备更好的隔离性和扩展性。
内容的提问来源于stack exchange,提问作者Bernhard Eischer
相关产品推荐
相关产品推荐

