是否有可能将一个Docker容器的端口暴露给另一个(或多个)Docker容器,而不暴露给主机?
是否有可能将一个Docker容器的端口暴露给另一个(或多个)Docker容器,而不暴露给主机?
是的,您可以将容器链接在一起,并且仅为这些链接的容器公开端口,而无需将端口导出到主机。
例如,如果您有一个运行postgreSQL数据库的Docker容器:
$ docker run -d --name db training/postgres
$ docker run -d --name web --link db training/webapp python app.py
运行您的Web应用程序的容器将有一组环境变量,其中包含数据库容器中暴露的端口,例如:
DB_PORT_5432_TCP_PORT=5432
根据容器名称创建环境变量,在本例中容器名称为db,所以环境变量以DB开头。
您可以在此处找到更多关于docker文档的详细信息:
--net
选项告诉容器使用它们。--net container:oneOfThem
)。这样,您甚至不需要配置主机名来使它们互相发现,它们可以共享相同的127.0.0.1
,而且没有任何东西暴露给外部。--net
,只是不要共享同一网络栈,而是设置更复杂的覆盖网络。--net
选项也可用于让容器直接在主机网络上运行。
--net
而不是容器链接来解决这个问题。 - Thilo--net
选项早就存在了。但是现在可以使用docker network create
来创建新的网络。 - r.v