我有一个包含 3 台机器的 Docker 群:1 台管理器和 2 台工作器(所有物理上不同的机器都运行 Linux)。我正在尝试使用覆盖网络将应用程序 (Dremio) 部署为管理器节点之一上的工作人员。
由于我有一些特定于节点的配置(通过绑定安装的文件),我的首选是使用
docker compose
将工作线程直接部署在管理器节点上,而不是使用 docker stack deploy
。
我已经使用以下方法在管理器上创建了一个可连接网络:
docker network create -d overlay --attachable --scope swarm css_attachable
然后我可以通过
docker compose
在管理器上运行 Dremio 容器,并将容器连接到 css_attachable
。
但是,当我在其中一个工作节点上部署 Dremio 执行器容器时,它无法连接到网络
css_attachable
。在 Docker 覆盖网络之后,我可以使用 docker run
但不使用 docker compose
将工作节点上的单个容器附加到管理器的覆盖网络。事实上,运行示例后:
docker run -dit --name alpine2 --network css_attachable alpine
当我运行
css_attachable
时,
docker network ls
实际上已在工作节点上列出,但即使网络
css_attachable
在工作节点上列出后,该节点上的
docker compose
仍然无法使用它。这是我正在使用的
docker-compose.yml
:
version: "3"
services:
executor:
image: dremio/dremio-oss:24.3.0
volumes:
- dremio_executor_1_v24_data:/opt/dremio/data
- ./core-site.xml:/opt/dremio/conf/core-site.xml
- ./dremio.conf:/opt/dremio/conf/dremio.conf
ports:
- "9047:9047"
- "31010:31010"
- "32010:32010"
- "45678:45678"
- "2181:2181"
networks:
- css_attachable
hostname: dremio-executor-1
volumes:
dremio_executor_1_v24_data:
external: true
networks:
public:
external:
name: css_attachable
与高山示例一样,我可以使用 css_attachable
:从我的工作人员成功连接到网络
docker run
docker run --name=dremio-executor -d --net=css_attachable -p 9047:9047 -p 31010:31010 -p 32010:32010 -p 45678:45678 -p 2181:2181 -v dremio_executor_1_v24_data:/opt/dremio/data -v ./dremio.conf:/opt/dremio/conf/dremio.conf -v ./core-site.xml:/opt/dremio/conf/core-site.xml dremio/dremio-oss
有什么方法可以在 docker compose 中本地使用这个远程覆盖网络吗?
我正在考虑指示 docker 引用远程主机的覆盖网络的方法 - 这可能吗?谢谢!
埃里克
放置首选项可用于将集群服务部署到特定节点。
排除该免责声明后,我认为您遇到了一个“已知错误”,该错误已在#10591 中修复并在 v2.19.0 中发布。因此,如果您在旧版本上看到此问题(使用 docker compose version
检查您的版本),那么是时候升级了。