Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
识别Docker容器';s的IP地址并连接到端口_Docker - Fatal编程技术网

识别Docker容器';s的IP地址并连接到端口

识别Docker容器';s的IP地址并连接到端口,docker,Docker,在我的windows笔记本电脑上,我创建了一个Play应用程序,如果我直接执行它的脚本,它运行良好。在本地计算机上,我使用localhost:9000URL访问应用程序 我现在已经创建了应用程序的Docker映像,并公开了端口9000 #this docker file copies prod specific files to container, eg logback_prod.xml and application_prod.conf FROM openjdk:8 #EN

在我的
windows
笔记本电脑上,我创建了一个
Play
应用程序,如果我直接执行它的脚本,它运行良好。在本地计算机上,我使用
localhost:9000
URL访问应用程序

我现在已经创建了应用程序的
Docker
映像,并公开了端口
9000

#this docker file copies prod specific files to container, eg logback_prod.xml and application_prod.conf

    FROM openjdk:8
    #ENV APP_NAME      myapp
    #ENV APP_VERSION   1.0-SNAPSHOT
...
    #entrypoint is deploy/....
    EXPOSE 9000
    ENTRYPOINT ...
但是我无法访问
localhost:9000
上的应用程序。我怀疑该映像可能正在docker自己创建的其他IP上运行

我说得对吗?如何通过容器访问我的应用程序?我不需要Kubernetes
服务
等,因为我已经在另一台机器上进行了设置。我的具体问题是如何直接访问
docker
容器

更新 我还尝试使用
--network=“host”
运行
docker
图像
,但这也不起作用

更新2

根据下面的建议,我执行了以下命令,但仍然无法访问应用程序

docker run-p 9000:9000--env文件env.txt imagename

我看到了痕迹

[debug] a.i.TcpListener - Successfully bound to /0.0.0.0:9000
[info] p.c.s.AkkaHttpServer - Listening for HTTP on /0.0.0.0:9000
docker ps-a
显示应用程序已启动端口绑定
0.0.0.0:9000->9000/tcp

docker-inspect
显示
IP
-
“IPAddress”:“172.17.0.2”

但是
http://172.17.0.2:9000/
Chrome
上的
不起作用
无法访问此站点172.17.0.2

cmd上的
netstat-ab
显示
TCP 0.0.0.0:9000笔记本电脑-788I0GL1:0侦听[com.docker.backend.exe]

识别容器的IP地址 在运行的容器中尝试这些选项。
指容器的名称或id

最后一个将输出在
网桥
网络(默认)中分配的所有正在运行的容器的信息。识别后,检查容器的
IPv4Address
字段


暴露端口 为了能够连接到容器的端口,您可以公开它。请注意,在这种情况下不需要上一步:

默认情况下,docker将绑定/侦听主机上的所有接口。
-p9000:9000
选项公开端口,结果是:
0.0.0.0:9000->9000/tcp


现在
localhost:9000
成功连接到docker进程。

您可以尝试使用命令
docker inspect

docker inspect <containerid>
要获取IP地址信息,您应该查看节点:

"IPAddress": "172.23.0.2"
在生成的json输出中


这是的文档。

谢谢。是的,但它没有显示任何东西。只有一个空输出,我看到“IPAddress”:“。当我运行
inspect
时。这奇怪吗?另外,我使用的是Windows,因此对于mesorry没有
Grep
,之前的错误是我使用
--network=“host”
运行。我删除了它,只运行了
docker
。我现在可以看到IP
“IPAddress”:“172.17.0.2”
,但我仍然无法使用
172.17.0.2:9000
访问应用程序,这是因为在运行容器时必须向主机“公开”端口。尝试docker run(…)-p9200:9200(…)-->did
docker run-p9000:9000--env file env.txt manuchadha25/mydockerimage
语法,但不要使用love。我确信这是某个愚蠢的错误,因为这并不难。当我运行docker ps-a时,我可以看到
0.0.0:9000->9000/tcp
,当我运行
inspect
时,我可以看到“IPAddress”:“。这很奇怪吗?发现这个问题的答案是公认的,也许这就是你的情况:谢谢。我会检查的。抱歉,前面的错误是我使用--network=“host”运行。我去掉了那个,只做了docker run。我现在可以看到IP“IPAddress”:“172.17.0.2”,但我仍然无法使用172.17.0.2:9000访问应用程序。您是如何启动容器的?您应该能够连接到
docker run-p
端口号;仅仅在Dockerfile中公开是不够的。容器专用IP地址是一个内部Docker实现细节,在许多常见情况下(如果Docker位于虚拟机中,在MacOS或Windows平台上,则来自不同的主机)不起作用,我不建议查找它。最近,我做了
Docker run-p 9000:9000--env文件env.txt manuchadha25/mydockerimage
。当我执行docker ps-a时,我可以看到
0.0.0.0:9000->9000/tcp
应用程序是否在127.0.0.1:9000(“仅本地主机”)、0.0.0:9000(“所有接口”)或其他设备上侦听?(它应该是0.0.0.0变体,端口号需要与第二个
-p
port)是否使用Docker工具箱?(这需要一个特殊的
docker机器ip
地址,可能是192.168.99.100,而不是
localhost
在/0.0.0:9000上侦听HTTP
docker network inspect bridge
docker run -p 9000:9000 --env-file env.txt manuchadha25/mydockerimage
docker inspect <containerid>
docker ps
"IPAddress": "172.23.0.2"