首页 > 解决方案 > 如何在 Docker Swarm 中设置专用网络?

问题描述

我正在研究如何正确设置 docker swarm 基础设施,但有一个问题我还没有找到答案。

假设,在这个基本场景中,我有 2 个服务:

     ┌────────┐
     │  WWW   │
     └────────┘
         ▲
         │
 Swarm   │
┌────────┼──────────────────────────┐
│        │                          │
│  ┌─────▼──────┐    ┌───────────┐  │
│  │            │    │           │  │
│  │    API     │◄──►│     DB    │  │
│  │            │    │           │  │
│  └────────────┘    └───────────┘  │
│                                   │
└───────────────────────────────────┘

出于安全目的,我不希望 DB 服务公开可用。我只希望 Docker Swarm 内的服务可以访问它,理想情况下我只希望它可用于 API 服务。

我试图设置一个桥接网络(在 docker-compose 文件中),但是在使用docker stack deploydocker 时抱怨它:“网络......不能与服务一起使用。只能使用范围为 swarm 的网络,例如那些使用覆盖驱动程序创建。 "。

所以,总结一下,我的问题是:

谢谢!

标签: dockerdocker-composedocker-swarm

解决方案


尝试以这种方式创建网络:

docker network create -d overlay my-network

并仅发布 API 服务端口以使其可从外部访问


推荐阅读