首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接到Windows上的docker容器

连接到Windows上的docker容器
EN

Stack Overflow用户
提问于 2020-09-11 20:13:11
回答 3查看 866关注 0票数 0

我已经阅读了this post,并尝试在docker-compose.yml中添加ports: "7080:7080",但仍然无法使用172.18.0.2:7080连接到容器(顺便说一句,我是一个docker新手)

这个容器是Windows10上的DockStation项目中的几个容器之一,我使用的图像是用于OpenLiteSpeed with WordPress的。

docker-compose.yml文件内容如下:

代码语言:javascript
复制
version: '2'
services:
  gnome-3-28-1804:
    image: ubuntudesktop/gnome-3-28-1804
  firefox:
    image: jlesage/firefox
  browser-box:
    image: jim3ma/browser-box
  openlitespeed:
    image: litespeedtech/openlitespeed
    ports: 
     - "7080:7080"

有什么想法吗?

更新: IP 172.17.0.1似乎是默认的网桥网关IP,所以我假设这个容器的172.18.0.2在某种程度上与此相关;Docker和DockStation都在主机10.0.0.10上本地运行,不确定设置是否应该使用网桥。http://localhost:7080/说ERR_CONNECTION_REFUSED

更新2:我正在使用Docker for Windows (Docker Desktop)。已尝试关闭Windows防火墙,但没有任何效果。仍然可以在http://localhost:7080/http://10.0.0.10:7080/上使用ERR_CONNECTION_REFUSED。项目中还有其他3个容器没有运行,只有LiteSpeed容器在运行。

更新3:我创建了一个新项目并安装了tutum/hello-world/,然后运行了新的容器。hello-world容器正在运行,我在日志中没有发现任何错误,但是本地主机和10.0.0.10都不会连接,Chrome中的错误是ERR_CONNECTION_REFUSED。如果我在Windows命令提示符下运行docker run -d -p 80 tutum/hello-world,情况也一样。

EN

回答 3

Stack Overflow用户

发布于 2020-09-11 20:36:22

此IP (172.18.0.2)代表什么?它是运行DockStation的远程计算机吗?

如果是这种情况,请检查此端口在该计算机上是否公开可用。您确实在blocks文件中添加了ports部分,它会将容器的端口映射到机器的端口-但防火墙是否阻止外部访问该端口是一个问题。

我会先试着从Docker机器上访问localhost:7080来解决这个问题--如果它能工作,你的172.18.0.2配置是好的,你需要在机器的配置中查找问题(例如防火墙)。

票数 1
EN

Stack Overflow用户

发布于 2020-09-12 04:49:04

我在我的系统上尝试了你的编写文件,它可以正常工作-我可以使用我的主机的系统IP和主机名以及容器的IP访问端口7080,只使用容器的IP访问端口80和443 (因为它们没有映射到任何主机的端口)。

你没有指定你使用的是Docker for Windows还是Docker Toolbox -- DockStation可以同时使用两者,但是如果你使用的是Docker Toolbox,那么你必须使用虚拟机的IP或主机名来访问7080端口,而不是localhost。如果您使用的是Docker for Windows,那么我不知道发生了什么--您确定容器正在运行吗?

至于你提到的IP是从哪里来的- 172.17.0.1很可能是你在Docker的默认桥接网络上的主机IP。默认情况下,Docker-compose会为每个项目创建自己的桥接网络。在您的示例中,在项目的网络中,主机的IP将是172.18.0.1。您可以使用命令docker network ls查看Docker的网络,并使用docker network inspect <network-name>查看它们的详细信息。

你不应该以任何理由使用这些IP,因为不能保证它们会保持不变。如果您需要从外部连接,请将内部容器端口映射到Docker主机的端口,就像您使用端口7080所做的那样,如果您需要容器相互连接-使用docker-compose,您可以使用服务名作为主机名,如果没有它,您必须将它们连接到相同的、非默认的桥接Docker网络,并使用它们的容器名作为主机名。

票数 1
EN

Stack Overflow用户

发布于 2020-09-26 17:59:33

这个solution对我很有效。

代码语言:javascript
复制
docker run -d -p 127.0.0.1:80:80 tutum/hello-world

显然,您必须指定您希望在localhost下公开端口。然后,在浏览器地址栏中输入的localhost会加载Hello World页面--万岁!

一旦我将docker-compose.yml中的端口更改为'127.0.0.1:80:80',那么当从DockStation运行时,它也可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63846886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档