gpt4 book ai didi

macos - 本地主机与 0.0.0.0 在 Mac OS 上使用 Docker

转载 作者:行者123 更新时间:2023-12-04 22:18:37 28 4
gpt4 key购买 nike

我正在阅读文档 here我发现自己有点困惑,因为运行docker run --name some-mysql -p 3306:3306 -d mysql
或者
docker run --name some-mysql -p 127.0.0.1:3306:3306 -d mysql
然后 mysql --host localhost --port 3306 -u root给我以下错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2).



但运行 mysql -u root -p --host 0.0.0.0作品。

有人有解释吗?

最佳答案

使用 docker 端口转发,您需要跟踪两个网络命名空间。第一个在您的容器内。如果您在容器内的 localhost 上进行监听,则容器外的任何内容都无法连接到您的应用程序。这包括阻止来自 docker 主机和容器到容器网络的端口转发。因此,除非您的容器正在与自己对话,否则您始终使用在容器内运行的应用程序在 0.0.0.0 上监听。

第二个网络命名空间位于您的 docker 主机上。当您使用 docker run -p 127.0.0.1:1234:5678 ... 转发端口时在 docker 主机接口(interface) 127.0.0.1 端口 1234 上配置监听器,并将其转发到容器命名空间端口 5678(该容器必须在 0.0.0.0 上监听)。如果您不使用 ip,docker 将在主机上的所有接口(interface)上发布该端口。

因此,当您将 mysql 配置为监听 127.0.0.1 时,无法从容器的网络命名空间之外访问它。如果您需要阻止 docker 主机之外的其他人访问该端口,请在 docker run 上发布端口时配置该限制。 cli。

关于macos - 本地主机与 0.0.0.0 在 Mac OS 上使用 Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47025647/

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