Connecting to a mysql running on a Docker container
I’m trying to run mysql server on a Docker (installed with Docker Toolbox for Mac) container and access it from my machine running OS X Yosemite. The documentation from the official repo does not explain how to connect from outside the docker host !!
I’ve created a container using the official repository as follows:
$ docker pull mysql $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest $ docker inspect CONTAINER_ID
Then I get the ip address (172.17.0.1), but when I ping it I see time outs!!! What’s the appropriate way to connect to the running mysql server?
One Solution collect form web for “Connecting to a mysql running on a Docker container”
This image exposes the standard MySQL port (3306), so container linking makes the MySQL instance available to other application containers
First, make sure your docker run map that port:
-p 3306:3306 (or the exposed port from the Dockerfile wouldn’t be accessible from the Linux host)
Then, you need
either to add a port forwarding rule to your VirtualBox VM, and access 127.0.0.1:3306,
VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port3306,tcp,,3306,,3306";
or access the boot2docker VM IP address
$(boot2docker ip), using port 3306.
After discussion, it turn out adding the port mapping at the end is wrong:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest -p 3306:3306
This does not work because “-p 3306:3306” is just interpreted as arguments to pass to the ENTRYPOINT command.
This works (meaning a docker ps -a shows the container as “running”, not “exited”):
docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest
root@$(docker-machine ip):3306 should be correct.