我当前的应用程序由30多个docker微服务组成。在初始阶段,早就选择了绑定安装,以持久化数据并在Docker容器之间共享配置文件。码头工人创建了丢失的主机路径时,这是变相的祝福。
volumes:
- /etc/localtime:/etc/localtime:ro
- /u/postgresql/var/lib/pgsql:/var/lib/pgsql
- ....
现在,我们进入了一个世界,在该世界中,bind mount禁止以WRITE模式装载任何目录。这意味着,我将不得不采用命名的docker卷而不是绑定挂载。这不是K8s或Openshift部署。
volumes:
MY_APP_POSTGRES:
external: true
MY_APP_YET_ANOTHER_VOLUME:
external: true
----------------
volumes:
- /etc/localtime:/etc/localtime:ro
- MY_APP_POSTGRES:/var/lib/pgsql
- ....
当我查看所用的独特装订架时,发现它的数量为50。如果必须将其替换为docker卷,则必须创建50个命名的docker卷。 Docker卷不像K8s那样支持'subpath'。因此,我无法共享docker卷。整个共享相同的Docker卷将使隔离变得混乱(例如,卡夫卡日志缺少cassandra数据...)
我对Docker卷的数量保持警惕。