【发布时间】:2019-05-29 04:12:22
【问题描述】:
我想在 Docker 容器中使用 GIT。 https://hub.docker.com/r/alpine/git/ 上记录的用法非常简单:
docker run -it --rm -v ${HOME}:/root -v $(pwd):/git alpine/git clone ...
这行得通。这样做的一大缺点是所有文件现在都归root 所有,而不是当前用户。我想解决这个问题,但到目前为止都失败了。
我当前的命令是:
docker run -it --rm
--user $(id -u):$(id -g)
-v $HOME:$HOME:rw
-v /etc/passwd:/etc/paswd:ro
-v /etc/group:/etc/group:ro
-v $PWD:$PWD:rw
-w $PWD
alpine/git
clone ...
在这里,我通过--user $(id -u):$(id -g) 以当前用户身份运行。另外,我正在传递$HOME、/etc/passwd 和/etc/group 以允许容器解析当前用户和主目录。
这会产生以下错误:No user exists for uid 1000。这是从哪里来的,如何解决?
版本信息:docker run -it --rm alpine/git --version 给出git version 2.15.0
【问题讨论】:
-
您是否在 Container 中创建了额外的用户?运行 Docker 容器的主机上的用户在容器内部是不可见的。您需要先在容器内创建一个用户。
-
我希望能够通过传递
$HOME、/etc/passwd和/etc/group来避免这种情况。我希望这就足够了。手动创建用户会额外提供什么? -
我没有你描述的问题。在 ubuntu 18.04
-
你有一个错字(
/etc/paswd有一个 S);但不能保证这些文件就足够了(某些系统使用密码数据库)。目前尚不清楚“没有用户存在...”消息的来源。也不清楚-v是否允许文件——docker run文档中的描述指的是目录,而不是文件。 -
@torek 哦,我的... 错字确实是这里的错误。谢谢,不胜感激!
标签: git docker user-roles passwd etcpasswd