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

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

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 

请给我一个关于如何解决这个问题的指针,我经历了教程,但我不知道哪里出了问题。

你使用的命令应该给出一个错误。 docker运行的语法如下:

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虚拟机的相同端口的端口映射时,您应该可以使用Boot2docker实例的IP访问MySQL,通常为192.168.59.103,并连接到端口3306。