docker - 从 Docker 容器连接到远程MySQL数据库

  显示原文与译文双语对照的内容

我正在使用containerize在单独服务器上连接到一个单独的服务器上的Django 1.5. x 应用程序:


[mysql_default]


database = DB_NAME


driver =/usr/lib64/libmyodbc5.so


server = REMOTE_DB_SERVER


user = DB_USER


password = DB_USER_PWD


port = 3306



在本地机器( 外部 Docker ) 上运行 Django 应用程序,通过端口转发 & SSH连接到远程数据库:


 ssh -L 3307:127.0.0.1:3306 MYID@REMOTE_DB_SERVER



我已经使用 Centos 6. x, 为应用程序设置了一个 Docker 容器,但无法获得MySQL连接。 容器安装了 MySQL,并且运行了 mysqld 。

我的docker-compose.yml 文件如下所示:


version:"2"


services:


 web:


 build:. 


 image: MY_IMAGE


 container_name: MY_CONTAINER


 network_mode:"host"


 ports:


 -"3307:3306"


 command:/bin/bash



运行容器后,可以执行以下命令( 容器外) 以显示远程数据库上的数据库:


docker exec MY_CONTAINER echo"show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3307



但是,从容器内部,同样的命令失败:


 echo"show databases" | mysql -u DB_USER -pDB_USER_PWD -h 127.0.0.1 --port=3306



ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)



时间: 原作者:

Docker的工作原理类似于虚拟机。 它拥有本地存储和本地环境。 连接到 127.0.0.1 时,它尝试连接到这个服务器,因为 Docker的本地主机是 Docker 。

请阅读以下答案:

从 Docker 容器内部,如何连接到机器的主机

...