无法连接到Windows 10 Docker mysql

时间:2017-04-18 18:58:20

标签: mysql docker docker-compose

赢得10 作曲家版本1.4.1 2017-03-10 09:29:45 PHP 7 NPM /节点 Docker CE Apache 2.4 电源外壳 git BASH shell drush(通过作曲家安装)

Noob Composer / Docker技能

我有一个docker config yml,指定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将这个预期的IP用于docker? 这是一个设置问题,还是我需要做的一些配置调整?

1 个答案:

答案 0 :(得分:1)

将端口绑定到主机时,必须使用localhost而不是容器的IP地址,因为您没有分配任何本地IP地址。

每个容器总是在一个独立的网络(网桥)中运行,您的撰写文件中的容器将能够通过其主机名找到其他容器,但这些容器中,它们与本地网络,这就是为什么你无法联系到他们。

在您的撰写文件中,您只有一个mysql容器,并且您正在绑定主机中的该端口,因此访问该容器的唯一方法是使用localhost:3306

请记住,当您运行docker容器时,它不像主机网络中具有IP的服务器,它更像是具有独立网络配置的虚拟机。

查看此特定主题中的docker-compose文档: https://docs.docker.com/compose/networking

更新:

最终回答问题的链接是: https://docs.docker.com/engine/userguide/networking/default_network/custom-docker0/