Docker run -v 在 macOS 上抛出权限被拒绝错误

Docker run -v 在 macOS 上抛出权限被拒绝错误

我对 Docker 还比较陌生。

我目前正在尝试在 MacOS 上运行 docker 容器。容器基于itzg/minecraft-server镜像。以正常方式运行容器没问题,但是我想要做的是将所有 Minecraft 服务器数据与特定目录同步。

例如,我想确保当我创建一个docker容器时,所有数据都已被创建或同步/Users/myname/MCServer(例如)。

我学会了这里我可以通过附加 -v 作为参数,然后添加服务器数据应位于的目录来做到这一点。

我首先尝试了以下操作:

docker run -v /Users/myname/Documents/MC Servers/Docker/Test:/data -d -it -p 32930:32930 -e TYPE=PAPER -e ONLINE_MODE=false -e SERVER_PORT=32930 -e EULA=TRUE -e VERSION=1.8.8 --name OpenSourcee itzg/minecraft-server

好吧,这样做效果不太好:

docker: invalid reference format: repository name must be lowercase.
See 'docker run --help'.

经过一番研究,我发现我可以使用 ` 符号来实现想要的效果。此外,我了解到 MC Servers 目录的名称中不能包含空格,因此我将其重命名为 MC_Servers。我还添加了 sudo(但也尝试过不添加 sudo)。以下是新命令:

sudo docker run -v `/Users/myname/Documents/MC_Servers/Docker/Test` -d -it -p 32930:32930 -e TYPE=PAPER -e ONLINE_MODE=false -e SERVER_PORT=32930 -e EULA=TRUE -e VERSION=1.8.8 --name OpenSourcee itzg/minecraft-server

不幸的是,这种方法没有起到效果,这次抛出了:
zsh: permission denied: /Users/myname/Documents/MC_Servers/Docker/Test

出现错误后,服务器启动了,但是没有文件/Users/myname/Documents/MC_Servers/Docker/Test......

如果有人能告诉我 -v 标签是否可以使 docker 使用给定的目录来创建我的 Minecraft 服务器并将其所有数据放入其中,以及如果可以,如何解决我遇到的权限错误,我将不胜感激。

谢谢!

答案1

引用您的卷定义。那里有一个空格,通常用于分隔参数,因此 docker 正在尝试查找Servers/Docker/Test:/data不是有效图像名称的图像。

docker run \
  -v "/Users/myname/Documents/MC Servers/Docker/Test:/data" \
  -d -it -p 32930:32930 \
  -e TYPE=PAPER \
  -e ONLINE_MODE=false \
  -e SERVER_PORT=32930 \
  -e EULA=TRUE \
  -e VERSION=1.8.8 \
  --name OpenSourcee itzg/minecraft-server

相关内容