我正在尝试运行 Wordpress 容器,配置为使用外部 MySQL 数据库服务器,如下所示:
docker run --name wordpress1 -p 801:80 -e WORDPRESS_DB_HOST=MYDBSERVERIPADDRESS:3306 -e WORDPRESS_DB_USER=username -e WORDPRESS_DB_PASSWORD=password -e WORDPRESS_DB_NAME=dbname -it wordpress
但是,当我这样做时出现此错误:
MySQL 连接错误:(1045)拒绝访问‘用户名’@‘WRONGIPADDRESS’(使用密码:是)
问题在于它使用的是容器主机的 IP 地址(我列为 WRONGIPADDRESS),而不是我使用 WORDPRESS_DB_HOST 参数指定的 IP 地址 - 它本质上完全忽略了 WORDPRESS_DB_HOST 参数。
知道为什么会发生这种情况吗?这应该是一个非常流行的容器 Wordpress 完全支持的 -e 参数,因此非常感谢您提供的任何帮助。
答案1
默认情况下,Docker 内部bridge
网络在docker0
接口上使用 NAT 与容器主机外部的主机进行通信。因此,外部主机看到的 IP 地址是容器主机的 IP 地址,而不是单个容器的 IP 地址。您所说的“错误”地址实际上是预期的地址,因为您的 MySQL 服务器不是在主机上的另一个 Docker 容器中运行,而是在外部。您应该在 MySQL 用户表中修复用户的 IP 地址。