gpt4 book ai didi

mysql - 连接到在 Docker 容器上运行的 mysql

转载 作者:可可西里 更新时间:2023-11-01 07:08:04 25 4
gpt4 key购买 nike

我正在尝试在 Docker(安装了适用于 Mac 的 Docker 工具箱)容器上运行 mysql 服务器,并从我运行 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 它时我看到超时!!!连接到正在运行的 mysql 服务器的合适方法是什么?

最佳答案

它说:

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

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

那么,你需要

  • 要么添加 port forwarding rule to your VirtualBox VM , 并访问 127.0.0.1:3306,

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

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

 docker run -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest

那么root@127.0.0.1:3306或者root@$(docker-machine ip):3306应该是正确的

关于mysql - 连接到在 Docker 容器上运行的 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32138294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com