docker工 – 合成比例与分开的卷
我想使用规模,但我需要不同的卷和端口映射的每个节点。
我怎样才能做到这一点? 理想情况下,我需要某种环境variables或运行脚本来为每个新实例分配一个卷和端口。
推荐的方法是什么?
我知道,这可能不是一个完美的解决scheme,但如果你不介意共享节点之间的数据..它确实工作。 我正在使用这个进行本地testing,所以在我的情况下是安全的。
泊坞窗,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
),它查询它的名字并创build一个到相应子目录的符号链接:
... NODE_NAME=$(python /root/scripts/get_name.py) OWN_VOLUME_NAME="/shared_volumes${NODE_NAME}" ln -s ${OWN_VOLUME_NAME} /data ...