V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
weishimi
V2EX  ›  Docker

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

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

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

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

    只能用 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  
       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   ·   我们的愿景   ·   实用小工具   ·   5543 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 08:36 · PVG 16:36 · LAX 01:36 · JFK 04:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.