挂载到主机目录的 docker 卷仅包含最后一个容器中的文件
Mounted docker volume to host directory contains only files from the last container
我正在启动多个链接的容器。所有容器都将主机目录 /var/log/tipsi/ 挂载到同一个内部目录。我只在最后一个容器中看到 /var/log/tipsi 中的文件的问题:
- tipsi_solr 和 tipsi_erl 设置了相同的文件
- tipsi_web容器(最后启动的容器)看不到上面的文件,只能看到自己的文件
- 主机目录仅包含来自 #2 (tipsi_web)
的文件
我正在使用图启动容器。这是使用的配置:
solr:
build: ../tipsi_solr/
volumes:
- /var/log/tipsi:/var/log/tipsi
- /home/docker/code/tipsi/solr/collection1/data
erl:
build: ../tipsi_erl/
volumes:
- /var/log/tipsi:/var/log/tipsi
web:
build: .
volumes:
- /var/log/tipsi:/var/log/tipsi
- /etc/cert:/etc/cert
ports:
- "443:443"
- "80:80"
links:
- solr:tipsi-solr.local
- erl:tipsi-erl.local
有趣的事情 - lsof 显示 tipsi_erl pid(在主机上启动)缺少文件:
prompt:~$ sudo lsof -p 12717
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 12717 root 12w REG 252,0 0 9323763 /var/log/tipsi/stacked_cache_error.log
beam.smp 12717 root 13w REG 252,0 739192 9323765 /var/log/tipsi/stacked_cache_debug.log
但其他应用无法访问它们:
ls /var/log/tipsi/stacked_cache_debug.log 22:35:29
ls: cannot access /var/log/tipsi/stacked_cache_debug.log: No such file or directory
此外,我尝试在 Dockerfile 中为所有容器指定和删除 VOLUME 参数,但没有成功。知道为什么没有显示这些文件吗?
我相信你在打https://github.com/docker/fig/issues/447
如果您在某一时刻将 VOLUME
添加到 Dockerfile,则在重新创建时您会继续获取该卷的内容。
您应该fig rm --force
清除旧容器,之后它应该开始工作并使用主机卷。
我正在启动多个链接的容器。所有容器都将主机目录 /var/log/tipsi/ 挂载到同一个内部目录。我只在最后一个容器中看到 /var/log/tipsi 中的文件的问题:
- tipsi_solr 和 tipsi_erl 设置了相同的文件
- tipsi_web容器(最后启动的容器)看不到上面的文件,只能看到自己的文件
- 主机目录仅包含来自 #2 (tipsi_web) 的文件
我正在使用图启动容器。这是使用的配置:
solr:
build: ../tipsi_solr/
volumes:
- /var/log/tipsi:/var/log/tipsi
- /home/docker/code/tipsi/solr/collection1/data
erl:
build: ../tipsi_erl/
volumes:
- /var/log/tipsi:/var/log/tipsi
web:
build: .
volumes:
- /var/log/tipsi:/var/log/tipsi
- /etc/cert:/etc/cert
ports:
- "443:443"
- "80:80"
links:
- solr:tipsi-solr.local
- erl:tipsi-erl.local
有趣的事情 - lsof 显示 tipsi_erl pid(在主机上启动)缺少文件:
prompt:~$ sudo lsof -p 12717
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 12717 root 12w REG 252,0 0 9323763 /var/log/tipsi/stacked_cache_error.log
beam.smp 12717 root 13w REG 252,0 739192 9323765 /var/log/tipsi/stacked_cache_debug.log
但其他应用无法访问它们:
ls /var/log/tipsi/stacked_cache_debug.log 22:35:29
ls: cannot access /var/log/tipsi/stacked_cache_debug.log: No such file or directory
此外,我尝试在 Dockerfile 中为所有容器指定和删除 VOLUME 参数,但没有成功。知道为什么没有显示这些文件吗?
我相信你在打https://github.com/docker/fig/issues/447
如果您在某一时刻将 VOLUME
添加到 Dockerfile,则在重新创建时您会继续获取该卷的内容。
您应该fig rm --force
清除旧容器,之后它应该开始工作并使用主机卷。