连接到Docker容器上运行的mysql

时间:2015-08-21 10:41:11

标签: mysql macos configuration docker remote-access

我试图在Docker(与Docker Toolbox for Mac一起安装)容器上运行mysql服务器,并从运行OS X Yosemite的计算机访问它。来自官方仓库的文档没有解释如何从docker主机外部连接!!

我使用official repository创建了一个容器,如下所示:

$ 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),但是当我ping它时,我看到超时!!!什么是连接到正在运行的mysql服务器的适当方式?

1 个答案:

答案 0 :(得分:2)

它说:

  

此图像公开标准MySQL端口(3306),因此容器链接使MySQL实例可用于其他应用程序容器

首先,确保你的docker run map端口:-p 3306:3306(或the exposed port from the Dockerfile无法从Linux主机访问)

然后,你需要

  • 要么添加port forwarding rule to your VirtualBox VM,要么访问127.0.0.1:3306,

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

discussion之后,最终添加端口映射是错误的:

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

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

这有效(意思是一个docker ps -a将容器显示为“running”,而不是“exited”):

 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应该是正确的。