mysql - 连接到外部MYSQL Docker容器

标签 mysql docker virtual-machine external

我有两个正在运行的VM,一个(A)在docker网络中有MYSQL数据库。
另一个(B)VM具有我的前端应用程序docker容器。

我按以下方式运行MYSQL docker容器(A):

docker run --name db --net=netname -v /path/to/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password  -d mysql:5.6.32

docker exec -i db mysql -pyourpassword -e 'CREATE DATABASE mydb'

将MYSQL的my.cnf文件编辑为bind-address = 0.0.0.0之后
我尝试使用mysqlt docker命令通过ip addr show eth0命令使用给我的IP地址从VM(B)连接。

这是:
 eth0@if46: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
inet 172.18.0.2/16 scope global eth0
   valid_lft forever preferred_lft forever

主机:172.18.0.2端口:3306

我收到的回复:
OperationalError: (2003, "Can't connect to MySQL server on '172.18.0.2' ([Errno 110] Connection timed out)")

我也尝试过VM(A)ip地址,但响应变为connection refused
我确定我缺少某些东西-或很多东西-我很乐意接受启发。我将如何从服务器(B)成功连接到(A)MYSQL容器?
先感谢您。

最佳答案

您最好将mysql端口映射到主机。

docker run -p 3306:3306 --name db --net=netname -v /path/to/mysql/:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=password  -d mysql:5.6.32

然后您可以使用主机ip或名称访问mysql。

如果您尝试通过ip地址直接访问容器,则在大多数情况下,这表示您做错了。假设每次启动容器时分配的IP是不同的。

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

相关文章:

MySQL 错误 1064 语法,但一切似乎都很好

docker 创建服务与 docker 部署堆栈

docker - 如何将 VueJS 应用程序 Dockerize 用于生产并跳过 Dev 依赖项的安装

linux - 无法启动虚拟机 - Azure 门户错误

azure - Azure D 系列与 DS 系列中持久性的简单说明

php - Laravel sql搜索json类型列

mySQL 仅当字段不同时才插入

mysql - 使用 Capistrano 运行 mySql 命令

windows - Windows位置上的Docker根文件夹

java - Azure部署名称 ''不存在Java创建VM