gpt4 book ai didi

docker - Docker:如何打开主机的端口?

转载 作者:行者123 更新时间:2023-12-02 20:18:01 25 4
gpt4 key购买 nike

Docker容器无法通过端口连接到主机系统的原因可能是什么?

具体来说,我正在尝试连接到在Docker主机上运行的MySQL服务器(Docker桥上的172.17.0.1)。但是,由于某些原因,端口3306总是关闭的。

复制步骤非常简单:

  • 配置MySQL(或任何服务)以侦听0.0.0.0(bind-address=0.0.0.0中的~/.my.cnf)
  • 运行
    $ docker run -it alpine sh
    # apk add --update nmap
    # nmap -p 3306 172.17.0.1

  • 而已。不管我做什么都会一直显示
    PORT     STATE  SERVICE
    3306/tcp closed mysql

    我已经尝试过使用ubuntu镜像,Windows主机和其他端口进行相同的操作。

    我想尽可能避免 --net=host,只是为了正确使用容器化。

    最佳答案

    事实证明这些IP地址不正确。没有什么阻塞端口,服务也运行良好。 pingnmap显示IP为在线,但由于某种原因,它不是主机系统。

    经验教训:不要依赖容器中的route返回正确的主机地址。而是分别在Linux或Windows主机上检查ifconfigipconfig,然后通过环境变量传递此IP。

    现在,我正在过渡到使用docker-compose并将所有必需的服务放入容器中,因此主机系统不需要参与,而我可以仅依靠Docker的DNS。这更令人满意。

    关于docker - Docker:如何打开主机的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40983368/

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