我有:
在第一个容器中,一个php脚本正在从mysql转储数据库并将已处理的数据迁移到mongodb。 它写入mongodb,但是从脚本调用的mysqldump命令不起作用。 这是mysqldump命令
mysqldump -h 127.0.0.1 -u xxxxx -pxxxxxx
低于错误
mysqldump: Got error: 2003: Can't connect to MySQL server on
'127.0.0.1' (111) when trying to connect
请注意,此脚本可在没有docker的情况下用于生产。 我尝试添加:
--protocol=TCP
--port=3307
还尝试将127.0.0.1更改为mysql(容器名),但也许不能与(net = host)一起使用,但仍然无法使用。
如果我通过php容器执行mysql -h 127.0.0.1 -u xxxx -pxxxx
,则可以使用,但是不能通过php脚本执行。
我用来启动容器的命令:
docker run --restart=unless-stopped --net=host --name mysql -v /opt/mysql/mysql_config:/etc/mysql/conf.d -v /opt/mysql/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxx -d mysql:5.6
docker run --restart=unless-stopped --net=host --name apachephp -d apachephp
答案 0 :(得分:1)
第一种选择最好使用docker-compose networking。但是要根据您当前的问题提供解决方案。
使用主机网络,容器无法获取IP,并且链接无法正常工作。
因此,可以通过删除--net host
并添加链接来快速修复它,也可以创建docker网络。
如果要从主机连接,可以发布端口。
docker run --restart=unless-stopped --name mysql -v /opt/mysql/mysql_config:/etc/mysql/conf.d -v /opt/mysql/mysql_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxx -d mysql:5.6
docker run --restart=unless-stopped --link mysql --name apachephp -d apachephp
现在,您将可以从PHP容器使用以下命令访问MySQL。
mysql -h mysql -uroot -ppassword