gpt4 book ai didi

linux - 将目录挂载到 Docker 中的命名卷

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:47 25 4
gpt4 key购买 nike

我希望我的项目的源代码可以通过命名卷访问(而不是使用绑定(bind)挂载方法)。但是我很困惑,我不知道应该如何将我的主机目录挂载到命名卷。因此,我在 docker-compose.yml 中定义了一个卷:

volumes:
appData:

services:
nginx:
.
.
.
volumes:
- appData:/usr/share/data

一切正常,但是我应该如何将我的主机文件添加到指定的卷中?以及什么时候。

最佳答案

不幸的是,没有像现在这样直接的方法来实现这一目标。 Docker 文档建议在这种情况下使用绑定(bind)安装或第 3 方卷插件。看不到任何近期实现相同计划的计划。

但是,您可以使用另一种方式手动完成 -

  1. 创建卷(使用 compose 时,卷是用当前目录(PROJECTNAME)作为前缀创建的)-
    $ docker volume create ${PROJECTNAME}_appData

  2. 创建一个虚拟容器并将主机目录复制到命名卷中并验证它 -

    $ docker container create --name dummy -v ${PROJECTNAME}_appData:/root alpine  #Create 
    $ docker cp ${PWD}/source_myfile.txt dummy:/root/myfile.txt #copy
    $ docker run -v ${PROJECTNAME}_appData:/root alpine ls -l /root #Verify

现在,当您执行 docker-compose up -d 时,它将跳过创建卷,因为它已经存在。

PS - 我知道这不是标准修复,但这是我能找到的所有快速解决方案。对于永久修复,您可以使用第 3 方卷插件。
https://docs.docker.com/engine/extend/legacy_plugins/

获取有关该问题的更多详细信息-
引用 - https://github.com/moby/moby/issues/25245

关于linux - 将目录挂载到 Docker 中的命名卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51121048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com