使用 docker compose 连接到远程覆盖网络

问题描述 投票:0回答:1

我有一个包含 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 引用远程主机的覆盖网络的方法 - 这可能吗?

谢谢!

埃里克

docker docker-compose docker-swarm
1个回答
0
投票
我通常建议不要使用可连接的覆盖网络。有一些问题,包括我很久以前记得的一个问题,docker 引擎会在网络重新启动可用之前尝试启动容器,并且无法重新启动持久容器。如果您无论如何都要走这条路,请进行大量测试。

放置首选项可用于将集群服务部署到特定节点。

排除该免责声明后,我认为您遇到了一个“已知错误”,该错误已在

#10591 中修复并在 v2.19.0 中发布。因此,如果您在旧版本上看到此问题(使用 docker compose version 检查您的版本),那么是时候升级了。

© www.soinside.com 2019 - 2024. All rights reserved.