Docker 中指定位置挂载数据,不能从容器中复制文件吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
weishimi
V2EX    Docker

Docker 中指定位置挂载数据,不能从容器中复制文件吗?

  •  1
     
  •   weishimi 2017-08-18 16:14:26 +08:00 6416 次点击
    这是一个创建于 3050 天前的主题,其中的信息可能已经有所发展或是发生改变。

    例如:挂个空目录进去,容器里对应目录里的文件就没了

    除了不指定目录,除了单独弄个数据卷

    只能用 Shell 弄个判断流程么,目录为空则自动写入文件;还是 Docker 有啥设置可以

    19 条回复    2020-04-02 20:36:28 +08:00
    whileFalse
        1
    whileFalse  
       2017-08-18 16:19:17 +08:00
    不能,会覆盖容器镜像里面的目录。

    你的需求和场景是什么。
    strahe
        2
    strahe  
       2017-08-18 16:40:49 +08:00
    Linux 基本功复习一下,能把一个盘挂载到非空目录么
    blanu
        3
    blanu  
       2017-08-18 16:42:55 +08:00 via iPhone
    我一开始也很疑惑,不过后来看到很多 shell 脚本处理这个,就感觉这个应该是从技术层面没办法实现
    weishimi
        4
    weishimi  
    OP
       2017-08-18 16:45:37 +08:00
    @whileFalse 需求是本地指定目录要直接有些初始文件,看来要不先在本地拷贝文件,然后再挂载,或者容器启动弄个脚本远程添加。
    weishimi
        5
    weishimi  
    OP
       2017-08-18 16:48:12 +08:00
    @strahe 这是 Docker,既然不能那能用其他方法实现,我问的在于 Docker 是否内置这个其他方法
    maninwa
        6
    maninwa  
       2017-08-18 16:49:10 +08:00 via Android
    @strahe 记得可以挂载到非空目录的呀,有次迁移存储还专门把备份放到挂载目录下(卸载后),迁移完成后又直接挂载回来
    zuolan
        7
    zuolan  
       2017-08-18 16:49:16 +08:00
    docker cp 复制出来再执行咯,不过既然你都打算挂载了,那就是数据卷了,既然是数据卷,那镜像里面这个目录干嘛还要放东西。。。。把你的场景说出来看看?
    weishimi
        8
    weishimi  
    OP
       2017-08-18 16:49:44 +08:00
    @blanu 看来只能这么来了,文件小点还好,多了就麻烦;唔,我去 WordPress 的 Docker 脚本
    weishimi
        9
    weishimi  
    OP
       2017-08-18 16:57:26 +08:00
    @zuolan 场景,唔,一个倒好解决,批量的话…… 额,算了,直接弄个 Shell 脚本交工得了
    gam2046
        10
    gam2046  
       2017-08-18 17:37:11 +08:00   2
    同意#7 的说法,建议描述一下具体的需求场景,而不是提一个 XY 问题。

    http://coolshell.cn/articles/10804.html

    对于 X-Y Problem 的意思如下:

    1 )有人想解决问题 X
    2 )他觉得 Y 可能是解决 X 问题的方法
    3 )但是他不知道 Y 应该怎么做
    4 )于是他去问别人 Y 应该怎么做?

    简而言之,没有去问怎么解决问题 X,而是去问解决方案 Y 应该怎么去实现和操作。于是乎:

    1 )热心的人们帮助并告诉这个人 Y 应该怎么搞,但是大家都觉得 Y 这个方案有点怪异。
    2 )在经过大量地讨论和浪费了大量的时间后,热心的人终于明白了原始的问题 X 是怎么一回事。
    3 )于是大家都发现,Y 根本就不是用来解决 X 的合适的方案。

    X-Y Problem 最大的严重的问题就是:在一个根本错误的方向上浪费他人大量的时间和精力!
    ryd994
        11
    ryd994  
       2017-08-18 18:29:10 +08:00 via Android
    一般是通过启动脚本来做这个
    kaneg
        12
    kaneg  
       2017-08-18 20:07:28 +08:00 via iPhone
    说了半天不知道楼主的原始需求是啥
    zoues
        13
    zoues  
       2017-08-18 20:48:47 +08:00 via iPhone
    可以啊
    leopku
        14
    leopku/strong>  
       2017-08-19 08:51:31 +08:00 via iPhone
    1. 挂载文件
    2. 挂载到另外一个目录,拷贝或 sync 过去
    weishimi
        15
    weishimi  
    OP
       2017-08-19 18:36:27 +08:00
    我也是服了,很多说原始需求、使用场景的,还拷贝个 X-Y Problem,有这个时间请看一下我发的 3 行。

    标题:Docker 中指定位置挂载数据,不能从容器中复制文件吗?
    说明:-v $PWD/data:/docker,有没有什么设置能够容器内 /docker 拷贝到$PWD/data,而不是以下第一行实际碰到的覆盖。我显然要是的是容器内 /docker 拷贝到宿主机$PWD/data 目录

    第一行:例如:挂个空目录进去,容器里对应目录里的文件就没了
    说明:-v $PWD/data:/docker,$PWD/data 文件覆盖了容器内 /docker 文件

    第二行:除了不指定目录,除了单独弄个数据卷
    -v /data,容器内 /data 文件拷贝到宿主机(随机目录);-v volume-name:/data,容器内 /data 文件拷贝到数据卷 volume-name

    第三行:只能用 Shell 弄个判断流程么,目录为空则自动写入文件;还是 Docker 有啥设置可以
    说明 1:我知道有个解决方法,先-v $PWD/data:/docker,再判断 /docker 是否为空目录,目录为空则放入文件。这么做容器启动的时候,文件从远程添加,文件过大的话脚本执行需要花费不少时间,这显然不好。
    说明 2:数据同步有多种规则,目录$PWD/data,容器内 /docker 是否也有这多种规则?

    能有多详细我就说的多详细了。

    > 没有筷子我能用筷子吃饭吗?
    1. 不用筷子怎么吃饭
    2. 除了用手抓吃饭,除了用勺子吃饭
    3. 我另外找个筷子可以的,还有其他方法吗?

    为啥有人要问我,你吃的什么饭,你喜欢什么样的吃饭方式,你为什么要吃饭
    ypcs03
        16
    ypcs03  
       2017-09-17 04:43:11 +08:00 via Android
    如果挂载路径存在 docker 会先把里面的内容 copy 到这个目录下面再挂载,但是在 host 上不可见,可以在容器内加个 command copy 出来
    clearT
        17
    clearT  
       2019-02-26 19:17:13 +08:00
    liu826250634
        18
    liu826250634  
       2020-03-18 10:21:32 +08:00
    @weishimi 你这个问题解决了么,我刚学了两天 docker, 也遇到这种问题了,感觉 docker 的作者不会没想到这点。。。
    weishimi
        19
    weishimi  
    OP
       2020-04-02 20:36:28 +08:00
    @liu826250634 好久没这样折腾了,你参考下 17 楼回复的:
    https://stackoverflow.com/questions/49633701/docker-volume-empty-after-its-created/49635340#49635340

    很多天前就已经看到了,但那时候回复,提示要验证手机号码,就没回复了。现在到这里有别的疑惑,于是,回复…
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2877 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:18 PVG 22:18 LAX 06:18 JFK 09:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86