如何将Docker网络暴露给主机?

pol*_*zul 10 networking docker docker-compose

考虑以下 docker-compose.yml

version: '2'
services:
    serv1:
        build: .
        ports:
          - "8080:8080"
    links:
      - serv2

    serv2:
        image: redis
        ports:
          - "6379:6379"
Run Code Online (Sandbox Code Playgroud)

我正在向主机发送端口以管理我的服务,但是服务可以使用默认的docker网络相互访问.例如,运行的程序serv1可以访问redis:6379,一些DNS魔术将使其工作.我想将我的主机添加到此网络,以便我可以通过其主机名:端口访问容器的端口.

dne*_*hin 7

您可以通过在与应用程序位于同一网络中的容器中运行dns代理(例如dnsmasq)来完成此操作。然后将主机dns指向容器ip,就可以像解析网络上的容器一样解析主机名。

https://github.com/hiroshi/docker-dns-proxy就是一个例子。


Yam*_*eko 5

如果您需要快速解决方法来访问容器:

  1. 获取容器IP
$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

172.19.0.9
Run Code Online (Sandbox Code Playgroud)
  1. 如果您需要使用容器名称,请将其添加到您的/etc/hosts.
# /etc/hosts

172.19.0.9 container_name
Run Code Online (Sandbox Code Playgroud)