我对神话般的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并查看存在的接口?
我不想使用主机模式,因为将来可能会运行并运行多个应用程序,因此我认为最好将接口分开。
答案 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