linux absolute path,无法在Linux上使用绝对路径创建Docker卷(Can't create Docker volume using absolute path on Linux...

无法在Linux上使用绝对路径创建Docker卷(Can't create Docker volume using absolute path on Linux)

当我试图运行一个Docker容器时,我想通过一个目录共享一些数据(我添加了重点)时收到以下错误消息:

## [错误] / usr / bin / docker:来自守护进程的错误响应:create -v / opt / vsts / work / 1 / s / coverage :“-v / opt / vsts / work / 1 / s / coverage”包含本地卷名称的无效字符,只允许“[a-zA-Z0-9] [a-zA-Z0-9 _.-]”。 如果您打算传递主机目录,请使用绝对路径。

我不明白的是,就我所知, /opt/vsts/work/1/s/coverage是一条绝对路径,正如第一条斜线所示。

有人能解释我做错了什么吗?

I'm getting the following error message when trying to run a Docker container with which I want to share some data via a directory (I added the emphasis):

##[error]/usr/bin/docker: Error response from daemon: create -v /opt/vsts/work/1/s/coverage: "-v /opt/vsts/work/1/s/coverage" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.

What I don't understand is, that to my knowledge /opt/vsts/work/1/s/coverage is an absolute path, as indicated by the first forward slash.

Can someone explain what I'm doing wrong?

原文:https://stackoverflow.com/questions/45536151

更新时间:2019-11-25 13:00

最满意答案

构建脚本传递“-v / opt / vsts / work / 1 / s / coverage”作为实际名称,即

docker run -v -v /opt/vsts/work/1/s/coverage:[...]

代替

docker run -v /opt/vsts/work/1/s/coverage:[...] 。

谢谢@larsks指引我朝着正确的方向前进。

A build script was passing in "-v /opt/vsts/work/1/s/coverage" as the actual name, i.e.

docker run -v -v /opt/vsts/work/1/s/coverage:[...]

instead of

docker run -v /opt/vsts/work/1/s/coverage:[...].

Thanks @larsks for pointing me in the right direction.

2017-08-06

相关问答

否,因为compose/config/config.py#load(config_details)检查datavolume/sql_data与命名卷匹配(在compose/config/validation.py#match_named_volumes() ) datavolume会, datavolume/sql_data不会。 No because compose/config/config.py#load(config_details) check if datavolume/sql_dat

...

热修复 我通过向每个人授予作家许可来解决问题。 mkdir output

touch output/reports.db output/database.log

chmod a+rw output output/*

这将给主机上的用户和root用户的docker机器权限,而不管谁拥有这些文件。 这只是一个肮脏的问题,因为我必须快点。 任何进程都可以访问和编辑/删除文件。 这样会更好如果只有docker用户获得了写入权限,但我无法将写入者权限授予主机上的root用户。 更好的方法 在这篇文章中,他

...

构建脚本传递“-v / opt / vsts / work / 1 / s / coverage”作为实际名称,即 docker run -v -v /opt/vsts/work/1/s/coverage:[...] 代替 docker run -v /opt/vsts/work/1/s/coverage:[...] 。 谢谢@larsks指引我朝着正确的方向前进。 A build script was passing in "-v /opt/vsts/work/1/s/coverage" as

...

Docker抱怨这个的语法: -v /myimage

正如文档所述 ,他们建议将che的数据放入卷中,以便在docker运行之间保留数据。 所以,把这个卷: -v $(pwd)/che-data:/data

导致此命令: docker run -p 8080:8080 \

--name che \

--rm \

-v /var/run/docker.sock:/var/run/docker.sock \

-v $(pwd)/che-dat

...

命令docker run -v /path/to/dir不接受相对路径,您应该提供绝对路径。 该命令可以重写为: sudo docker run -d \

--name eluci \

-v "$(pwd)/config/eluci.settings:/mnt/eluci.settings" \

-v "$(pwd)/config/elucid.log4j.settings.xml:/mnt/eluci.log4j.settings.xml" \

--link eluci-

...

这是docker-swarm或compose的示例,用于维护数据的持久性。 version: '3'

services:

sample:

image: sample

volumes:

- sample-date:/var/data

volumes:

sample-date:

driver: local

driver_opts:

o: bind

type: none

device:

...

docker容器中的文件系统包含几个东西。 第一个是映像中的根文件系统 - 这是从Docker存储卷提供的写文件系统上的副本安装的。 在此内部,可以安装各种“体积”。 卷是不同的,因为它不使用写文件系统上的副本,它使用系统的基本文件系统,并安装在您指定的位置的rootfs内。 如果为卷选择主机位置,则该目录/文件将安装在容器文件系统内 - 如果不这样,docker将为您创建一个目录并挂载该目录。 所以。 您在主机系统上创建了一个卷,并在其中存储数据。 数据实际存在于主机上的该位置。 在容器内部,安

...

如果您使用的是Windows 10并使用Docker For Windows,则docker将创建一个VM并在您的本地hyper-v上运行它,您创建的卷随后位于此VM内部,该VM存储在名为MobyLinuxVM.vhdx的内容中(您可以在docker的设置中检查它。 现在将数据放在主机上的一种方法是在docker设置上共享驱动器,然后将postgres数据文件夹映射到Windows硬盘驱动器。 像docker run -it -v /c/mypgdata:/var/lib/postgresql/d

...

您可以使用GetFullPath() ,但是您需要使用“hack”使其使用当前位置作为当前目录(以解析相对路径)。 在使用此修复程序之前,.NET方法的当前目录是进程的工作目录,而不是您在PowerShell进程中指定的位置。 请参阅为什么PowerShell中的.NET对象不使用当前目录? #Hack to make .Net methods use the shells current directory instead of the working dir for the process

[

...

它与“如何在busybox中执行二进制文件”有关。 “docker run”在执行命令之前安装卷。 例如,这适用于centos: docker run -v /home/chan:/home/chan centos /home/chan/echo.sh

hello world

要验证您是否可以在busybox中执行二进制文件,您可以执行此操作 docker run -it -v /Users/nnatara/Desktop:/home/chan busybox sh

/ # cd /home/c

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值