无法连接到Windows 10的Docker的MySQL
Win 10 Composer版本1.4.1 2017-03-10 09:29:45 PHP 7 npm / Node Docker CE Apache 2.4 Powershell git BASH shell drush(通过作曲者安装)
Noob作曲/docker技能
我有一个dockerconfigurationyml指定如何MySQL服务可以开始:
version: "2" services: mysql: image: mysql:5.6 ports: - 3306:3306 volumes: - /data/nbif_mysql:/var/lib/mysql environment: MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
而当我打电话
#!/bin/bash docker-compose up -d mysql
我看到容器正在运行:
PS C:\dev\appname> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f1a0ecab8af6 mysql:5.6 "docker-entrypoint..." 2 hours ago Up 5 seconds 0.0.0.0:3306->3306/tcp appname_mysql_1
但是,请注意报告的IP是0.0.0.0:3306->3306/tcp
所以当我尝试连接预期的IP时,它会失败:
ERROR 2003 (HY000): Can't connect to MySQL server on '172.17.0.1' (10060)
如何告诉docker-compose为Docker使用期望的IP? 这是一个设置问题,或者我需要做一些configuration调整?
将端口绑定到主机时,必须使用localhost
而不是容器的IP地址,因为您不分配任何本地IP地址。
每个容器总是运行在一个孤立的networking(网桥),你的撰写文件中的容器将能够通过他们的主机名find其他的容器,但在这些容器的内部 ,它们与本地networking隔离,所以你不能到达他们。
在你的撰写文件中,你只有一个mysql
容器,并且在你的主机上绑定了这个端口,所以到达这个容器的唯一方法是使用localhost:3306
记住,当你运行一个docker容器时,它不像你主机networking中的一个IP地址的服务器,它更像是一个孤立的networkingconfiguration的虚拟机。
看一下这个特定主题中的docker-compose
文档: https : //docs.docker.com/compose/networking
更新:
最终回答问题的链接是: https : //docs.docker.com/engine/userguide/networking/default_network/custom-docker0/