我试图在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服务器的适当方式?
答案 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:3306
或root@$(docker-machine ip):3306
应该是正确的。