Moby: 无法使用相对路径挂载主机文件

创建于 2016-07-07  ·  3评论  ·  资料来源: moby/moby

错误报告信息

docker version的输出:

Client:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Wed Apr 27 00:34:20 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Wed Apr 27 00:34:20 2016
 OS/Arch:      linux/amd64

docker info的输出:

Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 21
Server Version: 1.11.1
Storage Driver: overlay
 Backing Filesystem: xfs
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host bridge null
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 7.64 GiB
Name: centos-dev
ID: ACEV:LLBJ:NOYB:VEHF:V3FO:JY3A:5ETY:ETCU:WM3D:DBGZ:YF25:BUTY
Docker Root Dir: /var/lib/docker
Debug mode (client): false
Debug mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

重现问题的步骤:

  1. docker run --rm -it -v config.json:/etc/config.json centos:7 bash
  2. docker run --rm -it -v ./config.json:/etc/config.json centos:7 bash
  3. docker run --rm -it -v /root/config.json:/etc/config.json centos:7 bash

描述您收到的结果:

  1. 我在容器中得到一个文件夹“/etc/config.json”,而不是文件
  2. docker:来自守护进程的错误响应:创建 ./config.json:“./config.json”包括本地卷名的无效字符,仅“[a-zA-Z0-9][a-zA-Z0-9_. -]“ 被允许。
  3. 通过了,我在容器中有一个文件

描述您预期的结果:
我希望docker run支持使用相对路径安装本地文件。

相关问题: https ://github.com/docker/docker/issues/22016

versio1.11

最有用的评论

我将关闭它,因为它按预期工作并记录在案,即使它有点令人困惑。 如果您觉得文档需要改进,请提交补丁!

您可以通过-v $PWD/../../path:/location间接使用相对路径。

所有3条评论

@subchen这在文档中几乎有说明

container-dest 必须始终是绝对路径,例如 /src/docs。 host-src 可以是绝对路径或名称值。 如果您为主机目录提供绝对路径,Docker 将绑定安装到您指定的路径。 如果您提供一个名称,Docker 将使用该名称创建一个命名卷。

  1. docker 将其视为卷的名称,因此,创建卷,在其中为其创建一个文件夹并将卷安装在其中。
  2. docker _still_ 将其视为卷的名称,但卷名称中不允许使用/ ,因此它失败了
  3. 按预期工作:天使:

docker cli 不采用相对路径的原因是 docker 客户端和 docker 守护程序可能不在同一主机上。 那么相对路径应该如何处理呢?

  • 在客户端? 但是,守护程序不在同一主机上,可能在这个地方没有文件,即使有,文件的内容是否相同?
  • 在守护进程方面? 但相对于什么路径呢? 守护进程的路径?

我将关闭它,因为它按预期工作并记录在案,即使它有点令人困惑。 如果您觉得文档需要改进,请提交补丁!

您可以通过-v $PWD/../../path:/location间接使用相对路径。

@vdemeester @justincormack感谢您的解释。

-v $PWD/../../path:/location可以解决我的问题。

此页面是否有帮助?
0 / 5 - 0 等级