【问题标题】:Can't access SQL db inside Docker container无法访问 Docker 容器内的 SQL 数据库
【发布时间】:2016-09-24 21:33:29
【问题描述】:

我有一个成功运行的 SQL 数据库。但是,我无法在我的 SQL 客户端中访问它。

docker run -it --name sql_key_container -e MYSQL_ROOT_PASSWORD=testpw -e MYSQL_DATABASE=key_volume -p 3306:3306 -d myimgname/ubuntumaria:0.2

我验证它是由docker exec fcd12bf1da81 /etc/init.d/mysql status 运行的

我映射 3306 -> 3306 并使用主机 IP。仍然超时。这可能是什么?

【问题讨论】:

  • 您是否尝试将--net=host 选项添加到docker run

标签: mysql sql node.js docker mariadb


【解决方案1】:

您现在在容器 fcd12bf1da81 中运行了一个数据库,监听其本地 IP 和端口 3306 上的主机 IP。

如果您希望新容器 sql_key_container 访问该数据库,则该容器需要访问 fcd12bf1da81

你需要--link:

docker run -it --link fcd12bf1da81:mydb --name sql_key_container -e MYSQL_ROOT_PASSWORD=testpw -e MYSQL_DATABASE=key_volume -p 3306:3306 -d myimgname/ubuntumaria:0.2 

现在您可以使用mydb:3306 访问该容器内的数据库。

【讨论】:

  • 甚至不是另一个容器,只是我的本地机器
  • 同样的问题。 localhost 在您的本地主机上是 127.0.0.1,但不在您的容器中。您需要确保您的 mysql 在 0.0.0.0 上进行侦听,并且您需要为容器提供网络上主机的 IP 地址,容器也可以访问该地址。 localhost inside a container 是容器内部的接口,用于所有你不对外发布的端口和服务...
猜你喜欢
  • 2020-09-05
  • 1970-01-01
  • 1970-01-01
  • 2020-06-05
  • 2017-07-24
  • 2018-12-09
  • 1970-01-01
  • 2016-03-18
  • 2018-08-09
相关资源
最近更新 更多