gpt4 book ai didi

mysql - 从 Docker 容器连接到本地主机上的 MySQL

转载 作者:IT老高 更新时间:2023-10-28 12:45:22 24 4
gpt4 key购买 nike

我的本​​地主机上运行着 mysql我可以通过运行来连接它:

mysql -h 127.0.0.1 -P 3306 -u root -p

我还使用命令运行了 docker 容器:

docker run -tid -v $(pwd):/code -p 3306:3306 -p 5000:5000 --name container container

我想从 docker 容器访问我的 Mysql 数据库。所以我也从 docker 容器中输入:

mysql -h 127.0.0.1 -P 3306 -u root -p

但它给了我错误:

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

我做错了什么?端口似乎是正确的。编辑 1ifconfig 在 docker 中的输出:

eth0      Link encap:Ethernet  HWaddr 02:42:ac:11:00:02  
inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1780 errors:0 dropped:0 overruns:0 frame:0
TX packets:977 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2225781 (2.2 MB) TX bytes:56572 (56.5 KB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:28 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:1400 (1.4 KB) TX bytes:1400 (1.4 KB)

最佳答案

即使您将 MySQL 配置为监听所有接口(interface),然后从您的容器从非环回 IP 访问 MySQL,您可能会发现 Docker 的路由、NAT 和防火墙规则不允许您访问运行在主持人。解决此问题的快速解决方法是在主机网络堆栈上运行容器:

docker run -tid -v $(pwd):/code -p 3306:3306 -p 5000:5000 \
--name container --net host container

您还可以将 MySQL 移动到在同一 Docker 网络上运行的容器中,然后使用 Docker 的 DNS 服务发现通过容器名称访问它。

关于mysql - 从 Docker 容器连接到本地主机上的 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41897077/

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