pvg*_*ijn 49 docker-compose docker-volume
为了跟踪docker-compose使用的卷,我喜欢使用命名卷.这适用于"普通"卷
version: 2
services:
example-app:
volume:
-named_vol:/dir/in/container/volume
volumes:
named_vol:
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何在安装本地主机时使其工作.我正在寻找类似的东西:
version: 2
services:
example-app:
volume:
-named_homedir:/dir/in/container/volume
volumes:
named_homedir: /c/Users/
Run Code Online (Sandbox Code Playgroud)
要么
version: 2
services:
example-app:
volume:
-/c/Users/:/home/dir/in/container/ --name named_homedir
Run Code Online (Sandbox Code Playgroud)
这是以任何可能的方式,还是我坚持使用已安装的匿名卷?
kai*_*ser 32
正如您在此GitHub问题中所读到的那样,现在安装命名卷 是一个 ......自1.11或1.12以来.).记录驱动程序特定选项.来自GitHub线程的一些注释:
docker volume create --opt type=none --opt device=<host path> --opt o=bind
Run Code Online (Sandbox Code Playgroud)
如果主机路径不存在,则不会创建它.
选项按字面传递给mount syscall.我们可能会为某些"类型"添加特殊情况,因为它们很难使用......就像上面引用的nfs示例一样.
- @ cpuguy83
要解决有关如何在撰写中使用该问题的具体问题,请在您的volumes部分下写下:
my-named-volume:
driver_opts:
type: none
device: /home/full/path #NOTE needs full path (~ doesn't work)
o: bind
Run Code Online (Sandbox Code Playgroud)
这是因为当cpuguy83在链接的github线程中写入时,选项是(在引擎盖下)直接传递给mount命令.
编辑:评论如下......
${PWD}用于相对路径.... @ mikeyjk,您可能需要删除预先存在的卷:
docker volume rm $(docker volume ls)
Run Code Online (Sandbox Code Playgroud)vil*_*asv 13
OP 似乎已经在使用完整路径,但如果像大多数人一样,您对在容器内安装项目文件夹感兴趣,这可能会有所帮助。
这就是driver_opts@kaiser 所说的和@linuxbandit 举例说明的方法。但是您可以尝试使用通常可用的环境变量 $PWD 来避免在 docker-compose 上下文中指定目录的完整路径:
logs-directory:
driver_opts:
type: none
device: ${PWD}/logs
o: bind
Run Code Online (Sandbox Code Playgroud)
我最近在寻找同一个问题的答案,偶然发现了这个插件:https://github.com/CWSpear/local-persist 看起来它只允许开始的主题想要做什么.
我还没有尝试过,但认为它可能对某人有用.
我一直在尝试(几乎)相同的东西,它似乎与以下的东西一起工作:
version: '2'
services:
example-app:
volume:
-named_vol:/dir/in/container/volume
-/c/Users/:/dir/in/container/volume
volumes:
named_vol:
Run Code Online (Sandbox Code Playgroud)
似乎为我工作(我没有深入研究它,只是测试它).
| 归档时间: |
|
| 查看次数: |
35025 次 |
| 最近记录: |