Docker WordPress容器在~30秒后退出

我是使用Docker的新手,目前正尝试使用Wordpress Docker容器和MySQL数据库在本地创build一个Wordpress网站(注:我也是MySQL的新手)。 MySQL数据库没有运行在容器中,但我宁愿在我的机器上创build自己的本地数据库。

当我尝试使用此命令创build一个Wordpress容器时:

sudo docker run --name wordpress_local -e WORDPRESS_DB_HOST=localhost -e WORDPRESS_DB_USER=test -e WORDPRESS_DB_PASSWORD=password -d wordpress 

容器运行27秒,然后退出。

我不知道这是否因为它不能连接到我的数据库,但是,当我创build链接到MySQL 容器的 WordPress容器,我没有这个问题。 设置我的数据库的步骤:

  • 在我的机器上安装了MySQL服务器和客户端
  • 创build一个名为test @ localhost的用户并给它一个密码
  • 授予此用户所有的WordPress权限

任何帮助,将不胜感激!

编辑:

容器的日志如下所示:

 Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 MySQL Connection Error: (2002) No such file or directory Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 MySQL Connection Error: (2002) No such file or directory Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 MySQL Connection Error: (2002) No such file or directory Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 MySQL Connection Error: (2002) No such file or directory Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 MySQL Connection Error: (2002) No such file or directory Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 MySQL Connection Error: (2002) No such file or directory Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 MySQL Connection Error: (2002) No such file or directory Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 MySQL Connection Error: (2002) No such file or directory Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 MySQL Connection Error: (2002) No such file or directory Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in - on line 10 

编辑2:

运行sudo docker events --filter wordpress_local产生:

 2015-06-10T13:57:11.000000000Z e9000a3a085731d527f0e64a26f681126f5885f9ef0d4a845361d581ae2d111a: (from wordpress:latest) die 

我find了解决办法。 Docker提供了两种联网模式:桥接和主机。

桥接networking模式是默认的,当使用这种模式时,MySQL必须监听Docker主机IP地址( 172.17.42.1 )上的连接。 换句话说,MySQLconfiguration文件中的bind-address必须设置为: 172.17.42.1

我的解决scheme是通过添加--net="host"标志到我的命令使用主机networking模式。 这允许我从我的容器连接到本地主机,并允许我保持127.0.0.1作为我的MySQL绑定地址。 正确的命令如下所示。

 sudo docker run --name wordpress_local --net="host" -e WORDPRESS_DB_HOST=127.0.0.1 -e WORDPRESS_DB_USER=test -e WORDPRESS_DB_PASSWORD=password -d wordpress 

编辑:这是很好的要注意,这不是一个非常安全的方法,因为它允许容器访问本地networking服务。 更好的方法是妥协数据库的灵活性,并将其绑定到Docker主机,或允许数据库接受来自所有服务的连接,并使用防火墙过滤不需要的访问。