远程访问docker容器中的webserver

tom*_*per 9 ubuntu-server docker

我已经开始使用docker for dev,具有以下设置:

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

就主机容器访问而言 - 一切正常. 但是,我无法从远程计算机(尽管仍在同一网络中)访问容器的webapp.

跑步时

docker port <container-id> 443
Run Code Online (Sandbox Code Playgroud)

输出是预期的,所以docker的端口绑定似乎很好.

172.16.*.*:<random-port>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

谢谢!

tom*_*per 9

我想出了我错过的内容,所以这里有一个从远程机器访问docker容器webapps的简单流程:

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

    docker run -p 127.0.0.1:443:3444 -d <docker-image-name>
Run Code Online (Sandbox Code Playgroud)

(有关所有选项的端口重定向,请参阅docker docs)

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

    iptables -t nat -A PREROUTING -i <host-interface-device> -p tcp --dport <host-physical-port> -j REDIRECT --to-port <container-virtual-port>
Run Code Online (Sandbox Code Playgroud)

这应该涵盖基本用例.

祝好运!