如何将Docker容器公开到Web

时间:2019-12-12 15:17:51

标签: docker exist-db

我对神话般的docker和star twith世界是陌生的,我想问一个相当愚蠢的问题。 但是首先,关于我自己的一些信息:

我正在使用exist-db并计划将其移至docker。因此,我想并按照this的说明在服务器上进行设置。我尚未导入我的应用程序,因为我想了解它的工作原理,然后才转向“云”。

我正在服务器上运行docker,可以使用Putty访问该服务器。我已经正确设置了它,即使我的existdb容器也可以正常工作:

curl localhost:8080

为我提供了我期望来自existDB的html输出。 但是,当我尝试在firefox中访问[server-IP]:8080时,无法访问它。

我知道除了启动容器时,我还没有配置其他任何东西,但是以下内容。

docker run -it -d -p 8080:8080 -p 8443:8443 --name exist existdb/existdb:latest

这是否不应该将我的容器[8080]绑定到我的主机[8080](或者将8443绑定到我的主机),所以我从理论上应该能够[Host-ip]:8080并查看存在的接口?

我不想使用主机模式,因为将来可能会运行并运行多个应用程序,因此我认为最好将接口分开。

1 个答案:

答案 0 :(得分:0)

在此之后answer,我引用

  

默认情况下,Docker将容器端口公开为IP地址0.0.0.0(与系统上的任何IP匹配)。如果愿意,可以告诉Docker绑定哪个IP。要绑定IP地址10.0.0.3,主机端口80和容器端口8080:

docker run -p 10.0.0.3:80:8080 <your image>

下面的评论我试图重现这一点,正如您所见

CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS                   PORTS                                            NAMES
9eebf8c6f3b2        existdb/existdb:latest   "java org.exist.star…"   2 minutes ago       Up 2 minutes (healthy)   0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp   exist

所以您需要运行如下命令 docker run -it -d -p 0.0.0.0:8080:8080 -p 0.0.0.0:8443:8443 --name exist existdb/existdb:lates