无法连接到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/