【问题标题】:-v deleted all the data from the docker container-v 从 docker 容器中删除所有数据
【发布时间】:2019-04-07 05:52:41
【问题描述】:

我做了一个名为myImage的docker镜像,有一个文件夹:/data我想让用户自己编辑。我读到-v 标志可以挂载卷,所以我使用它如下:

我用这个命令运行容器:

docker run -v /my_local_path:/data -it myImage /bin/bash

但令人惊讶的是,docker 清除了容器中/data 中的所有文件。但这不是我想要的...我实际上希望主机可以从/data 获取所有文件... :(

我该怎么做?

【问题讨论】:

  • 你不能。当您将主机目录挂载到容器时。第一次来自主机的数据会覆盖容器目录中的所有数据。然后容器内目录中的所有更改都将与您的主机安装目录同步......您可能想尝试将您的主机安装到另一个目录并从 /data 复制到该目录。
  • @TruongDang 实际上,我看到 bitname/wordpress 做到了。他们可以让用户编辑一些数据...

标签: docker


【解决方案1】:

当您像这样共享一个卷时,主机上的卷会覆盖容器中的卷,因此容器文件夹中的文件将被删除。

您需要做的是将容器中的文件放在文件夹A(容器中的文件夹)中。挂载文件夹 B(容器中的另一个文件夹)。然后在挂载卷之后,将文件从文件夹 A 移动到文件夹 B。然后这些文件将在主机和容器内都可用。

您可以在 Dockerfile 中使用 RUN 或 ENTRYPOINT 脚本来实现此“移动文件”操作。

Run a script in Dockerfile

抱歉,我忘记了您是否需要 RUN 或 ENTRYPOINT(或者是否其中任何一个都可以),但其中之一肯定可以。

认为您需要 ENTRYPOINT,因为 ENTRYPOINT 脚本在容器创建后运行。因此,它将在卷安装后运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-03
    • 2017-04-06
    • 2016-01-19
    • 1970-01-01
    • 2020-10-23
    • 2021-10-23
    • 2021-02-26
    • 1970-01-01
    相关资源
    最近更新 更多