我知道这可能不是一个完美的解决方案,但如果你不节点之间共享介意数据做它的工作好。我使用这个进行本地测试,所以对我来说这是安全的。
多克尔 - compose.yml
...
volumes:
- /var/run/docker.sock:/var/run/docker.sock
...
Dockerfile
...
RUN pip3 install docker
...
在每个节点中,我部署以下脚本get_name.py
from docker import Client
import os
hostname = os.environ['HOSTNAME']
cli = Client(base_url='unix://var/run/docker.sock')
data = cli.containers()
for d in data:
id = d['Id'][:12]
names = d['Names']
if id == hostname:
print(names[0])
quit()
print(hostname)
而当节点启动(start.sh
)它查询它的名字,并创建一个符号链接到对应的g子目录:
...
NODE_NAME=$(python /root/scripts/get_name.py)
OWN_VOLUME_NAME="/shared_volumes${NODE_NAME}"
ln -s ${OWN_VOLUME_NAME} /data
...
目前我怀疑是否有一种方法,我正在研究文章,它显示了另一种可能的方式来做到这一点。将尽快发布 –
嗨塔伦,谢谢。我发了另一个类似的问题。我很期待这篇文章,但不幸的是我需要更快的答案:)也许有人有一些想法.. – purpletentacle
希望明天最大的 –