连接到 Docker 容器上的 mysql 运行

Connecting to a mysql running on a Docker container

我正在尝试 运行 mysql 服务器上的 Docker(与 Docker Toolbox for Mac 一起安装)容器并从我的服务器访问它机器 运行宁 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 它时我看到超时!!!连接到 运行ning mysql 服务器的正确方法是什么?

它说:

This image exposes the standard MySQL port (3306), so container linking makes the MySQL instance available to other application containers

首先,确保您的 docker 运行 映射该端口:-p 3306:3306(或者 the exposed port from the Dockerfile 无法从 Linux 主机访问)

那么,你需要

  • 或者添加一个,访问127.0.0.1:3306,

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

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 将容器显示为“运行ning”,而不是“已退出”):

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