连接到在Docker容器上运行的mysql

我试图运行一个Docker(安装了Docker Toolbox for Mac)容器上的mysql服务器,并从运行OS X Yosemite的机器访问它。 从官方回购的文件没有解释如何从docker主机外部连接!

我已经使用官方存储库创build了一个容器,如下所示:

$ docker pull mysql $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest $ docker inspect CONTAINER_ID 

然后我得到的IP地址(172.17.0.1),但当我平了,我看到超时! 什么是连接到运行的MySQL服务器的适当方式?

它说:

这个镜像暴露了标准的MySQL端口(3306),因此容器连接使得MySQL实例可用于其他应用程序容器

首先,确保你的docker运行映射该端口:-p -p 3306:3306 (或者从Docker文件暴露的端口不能从Linux主机访问)

那么,你需要

  • 要么将端口转发规则添加到您的VirtualBox虚拟机 ,并访问127.0.0.1:3306,

     VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port3306,tcp,,3306,,3306"; 
  • 或使用端口3306访问boot2docker虚拟机IP地址$(boot2docker ip)

经过讨论后发现join端口映射最后是错误的:

 docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest -p 3306:3306 

这不起作用,因为“-p 3306:3306”只是被解释为传递给ENTRYPOINT命令的参数。

这工作(意思是一个dockerPS -A显示容器为“运行”,而不是“退出”):

  docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest 

然后root@127.0.0.1:3306root@$(docker-machine ip):3306 root@127.0.0.1:3306 root@$(docker-machine ip):3306应该是正确的。