我可以将 Docker 端口仅暴露给另一个 Docker(而不是主机)吗?

Thi*_*ilo 3 networking docker

是否可以将一个 Docker 容器的端口暴露给另一个(或其他几个)容器,而不将其暴露给主机?

Ale*_*lva 6

是的,您可以将容器链接在一起,并且仅向这些链接的容器公开端口,而无需将端口导出到主机。

例如,如果您有一个运行 postgreSQL db 的 docker 容器:

$ docker run -d --name db training/postgres
Run Code Online (Sandbox Code Playgroud)

您可以链接到运行 Web 应用程序的另一个容器:

$ docker run -d --name web --link db training/webapp python app.py
Run Code Online (Sandbox Code Playgroud)

运行 Web 应用程序的容器将具有一组环境变量,其中包含数据库容器中公开的端口,例如:

DB_PORT_5432_TCP_PORT=5432
Run Code Online (Sandbox Code Playgroud)

环境变量是根据容器名称创建的,在本例中容器名称是 db,因此环境变量以 DB 开头。

您可以在此处的 docker 文档中找到更多详细信息:

https://docs.docker.com/v1.8/userguide/dockerlinks/