Bob*_*tiz 7 networking network-programming portforwarding docker docker-compose
来自 Docker 文档:
--publish or -p flag. Publish a container's port(s) to the host.--expose. Expose a port or a range of ports.--link. Add link to another container. Is a legacy feature of Docker. It may eventually be removed.我正在使用 docker-compose 与多个网络。我不想向主机发布任何端口,但是当我使用公开时,该端口将公开给容器连接到的所有网络。经过大量测试和阅读后,我似乎无法弄清楚如何将其限制为特定网络。
例如,在此docker-compose文件中,使用 wherecontainer1连接以下三个网络:internet、email和database。
services:
container1:
networks:
- internet
- email
- database
Run Code Online (Sandbox Code Playgroud)
现在,如果我想仅向网络公开一个特定端口database,而不向主机公开,也不向本示例中的网络email公开,该怎么办?internet如果我将其用于ports:暴露container1给主机,或者我可以将其绑定到主机的特定IP地址。*我还尝试创建一个自定义覆盖网络,为容器提供静态 IPv4 地址,并尝试以ports:类似的格式设置端口- '10.8.0.3:80:80',但这也不起作用,因为我认为绑定只能发生在主机 IP 地址上。如果我expose:在container1端口上使用,将暴露于所有三个网络:internet、email和database。
我知道我可以进行自定义防火墙规则,但令我烦恼的是我无法在 docker-compose 文件中编写如此简单的配置。另外,也许类似80:10.8.0.3:80(HOST_IP:HOST_PORT:CONTAINER_IP:CONTAINER_PORT) 的东西在这里很有意义(没有测试它)。*
我是否遗漏了一些东西,或者这在 Docker 和 Docker-compose 中真的不可能吗?
还发布在这里: https: //github.com/docker/compose/issues/8795
对我来说,答案是删除 -p 命令,因为它将容器绑定到主机并使其在主机外部可用。
如果不指定 -p 选项。该容器可在其连接的所有网络上使用。在应用程序正在侦听的任何一个或多个端口上。
似乎 -P 强制将容器连接到主机并将其绑定到指定的端口。
在您的示例中,如果您在盯着“container1”时不使用 -p 。“container1”可用于网络:互联网、电子邮件、数据库及其所有端口,但不能在主机外部使用。
| 归档时间: |
|
| 查看次数: |
2854 次 |
| 最近记录: |