【问题标题】:Remote access to webserver in docker container远程访问 docker 容器中的网络服务器
【发布时间】:2014-03-25 02:05:27
【问题描述】:

我已经开始使用 docker for dev,设置如下:

  • 主机 - ubuntu 服务器。
  • Docker 容器 - 带有 tomcat 服务器的 webapp(使用 https)。

就主机容器访问而言 - 一切正常。 但是,我无法从远程机器(尽管仍在同一个网络中)访问容器的 web 应用程序。

运行时

docker port <container-id> 443

输出符合预期,所以docker的端口绑定看起来不错。

172.16.*.*:<random-port>

有什么想法吗?

谢谢!

【问题讨论】:

    标签: docker ubuntu-server


    【解决方案1】:

    对于如何从外部设备(在同一网络中)访问 docker 容器有一些替代方法,请查看此帖子以获取更多信息 http://blog.nunes.io/2015/05/02/how-to-access-docker-containers-from-external-devices.html

    【讨论】:

      【解决方案2】:

      如果您的容器是使用具有 EXPOSE 语句的 Dockerfile 构建的,例如EXPOSE 443,然后您可以使用-P 选项启动容器(如“发布”或“公共”)。该端口将可用于来自远程计算机的连接:

      $ docker run -d -P mywebservice
      

      如果您没有使用 Dockerfile,或者它没有 EXPOSE 语句(应该!),那么您也可以进行显式端口映射:

      $ docker run -d -p 80 mywebservice
      

      在这两种情况下,结果都将是一个可公开访问的端口:

      $ docker ps
      9bcb… mywebservice:latest … 0.0.0.0:49153->80/tcp …
      

      最后但同样重要的是,如果需要,您可以强制使用端口号:

      $ docker run -d -p 8442:80 mywebservice
      

      在这种情况下,在端口 8442 上连接到您的 Docker 主机 IP 地址将到达容器。

      【讨论】:

        【解决方案3】:

        我知道我错过了什么,所以这里有一个从远程机器访问 docker 容器 webapps 的简单流程:

        步骤#1:将物理主机端口(例如 22、443、80、...)绑定到容器的虚拟端口。 可能的语法:

            docker run -p 127.0.0.1:443:3444 -d <docker-image-name>
        

        (请参阅docker docs for port redirection 以及所有选项)

        步骤#2:将主机的物理端口重定向到容器分配的虚拟端口。可能的(linux)语法:

            iptables -t nat -A PREROUTING -i <host-interface-device> -p tcp --dport <host-physical-port> -j REDIRECT --to-port <container-virtual-port>
        

        这应该涵盖基本用例。

        祝你好运!

        【讨论】:

          【解决方案4】:

          如果我错了,请纠正我,但据我所知,docker host 为其容器创建了一个专用网络,该网络无法从外部访问。也就是说,您最好的选择可能是访问 {host_IP}:{mapped_port} 上的容器。

          【讨论】:

          • 你是对的,应该这样工作(见docker.io : port redirection)。但是,我的问题似乎与我的主机(ubuntu 服务器 13.10)有关,当从远程机器访问 https://{host_IP}:{mapped_port} 时,它不会将我重定向到容器。
          猜你喜欢
          • 2023-03-07
          • 1970-01-01
          • 2020-11-22
          • 1970-01-01
          • 2014-10-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多