Docker for Windows:如何从开发机器访问容器(通过ip / dns名称)

问题似乎被问,但我真的不明白。

我有一个窗口10 dev机器主机与docker安装的Windows。 除了其他networking之外,它还拥有IP 10.0.75.1的DockerNATnetworking

我用docker-compose运行一些容器:

version: '2' services: service_a: build: . container_name: docker_a 

它创build了一些networkingbla_default ,容器的IP为172.18.0.4,ofcource我无法连接到172.18.0.4从主机 – 它没有任何networking接口。

我应该怎么做才能从主机访问这个容器? (通过IP),如果可能的话通过一些DNS名称? 我应该添加到我的docker-compose.yml,如何configurationnetworking?

对我来说,这应该是一个基本的东西,但我真的不明白这些东西是如何工作的,并直接从主机访问容器。

允许从开发机器访问内部dockernetworking:

 route /P add 172.0.0.0 MASK 255.0.0.0 10.0.75.2 

然后使用此https://github.com/aacebedo/dnsdock来启用DNS发现。 提示:

 > docker run -d -v /var/run/docker.sock:/var/run/docker.sock --name dnsdock --net bridge -p 53:53/udp aacebedo/dnsdock:latest-amd64 > add 127.0.0.1 as DNS server on dev machine > Use labels described in docs to have pretty dns names for containers 

所以原来问题的答案是:我们可以! 哦,这不是真的。

让DOCKER再次伟大!

最简单的select是端口映射: https : //docs.docker.com/compose/compose-file/#/ports

只需添加

 ports: - "8080:80" 

到构成的服务定义。 如果您的服务在端口80上侦听,则localhost:8080上的localhost:8080请求将被转发到容器。 (我使用docker机,所以我的docker主机是另一个IP,但我认为本地主机是如何docker为Windows出现)

将服务视为在一个(或几个)端口上监听的单个进程对我来说效果最佳,但如果您想开始阅读关于networking选项的信息,可以在这里find一些地方:

https://docs.docker.com/engine/userguide/networking/ Docker的networking官方网页 – 一个非常高层次的介绍,大部分关于默认网桥行为的细节。

有关docker主机内networking布局的更多信息, 请访问http://www.linuxjournal.com/content/concerning-containers-connections-docker-networking

http://www.dasblinkenlichten.com/docker-networking-101-host-mode/主机模式是一种神秘的,我很好奇,如果它在Windows上类似的工作。