繁体   English   中英

挂载到主机目录的Docker卷仅包含最后一个容器中的文件

[英]Mounted docker volume to host directory contains only files from the last container

我正在启动多个链接的容器。 所有容器都将主机目录/ var / log / tipsi /挂载到相同的内部目录中。 我只能在最后一个容器中的/ var / log / tipsi中看到文件的问题:

  1. tipsi_solr和tipsi_erl具有相同的文件集
  2. tipsi_web容器(最后启动的容器)在上面看不到文件,而仅看到其自己的文件
  3. 主机目录仅包含来自#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显示了tipi_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清除旧容器,然后再开始工作并使用主机卷。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM