无法在本地连接到dockerized mysql容器

时间:2015-02-08 11:42:07

标签: mysql docker development-environment boot2docker

我仍然是docker的初学者,试图使用docker来帮助我进行开发原型设计。我的环境是使用boot2docker的Mac,版本如下

Client version: 1.3.1
Client API version: 1.15
Go version (client): go1.3.3
Git commit (client): 4e9bbfa
OS/Arch (client): darwin/amd64
Server version: 1.3.2
Server API version: 1.15
Go version (server): go1.3.3
Git commit (server): 39fa2fa

我按如下方式运行命令:

docker run --name mymysql -e MYSQL_ROOT_PASSWORD=mypw -e MYSQL_DATABASE=bullshit -d mysql -p 3306:3306
docker start mymysql

我可以看到该过程如下运行:

CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
22d3f780c270        mysql:5             "/entrypoint.sh -p 3   2 minutes ago       Up 2 seconds        3306/tcp            mymysql   

但是我仍然无法连接到docker中运行的mysql实例。我尝试连接到检索到的ip:

$ boot2docker ip    
The VM's Host only interface IP address is: 192.168.59.103

请给我一个如何解决这个问题的指针,我完成了教程,但我不确定出了什么问题。

1 个答案:

答案 0 :(得分:2)

您使用的命令应该出错。 docker run的语法如下:

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

在指定使用的图像(在您的情况下为mysql)之前,您必须将选项提交到docker run,如果是这种情况,则命令和该命令的可能参数。 不指定命令将在映像中运行默认命令。

在再次运行容器之前,您应该停止并删除旧容器:

docker kill mymysql
docker rm mymysql

然后,按照你的例子,你应该运行:

docker run --name mymysql -e MYSQL_ROOT_PASSWORD=mypw -e MYSQL_DATABASE=bullshit -p 3306:3306 -d mysql

当您手动设置从容器的端口3306到Boot2docker VM的同一端口的端口映射时,您应该可以使用Boot2docker实例的IP(通常为192.168.59.103)连接到MySQL,并连接到端口3306。