无法在本地连接到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。