我想使用我的主机帐户运行 docker,
通常我会这样做:
#!/bin/bash
user_home="${HOME:-"$(eval echo "~$(whoami)")"}"
docker run -it --rm \
--env "USER=$(whoami)" \
-u $(id -u ${USER}):$(id -g ${USER}) \
--volume "${user_home}:${user_home}":ro \
--volume /etc/passwd:/etc/passwd:ro \
--volume /etc/group:/etc/group:ro \
"ubuntu" /bin/bash
但是现在我需要在一台使用NIS(网络信息服务)管理用户的PC上进行 我的用户不存在于/etc/passwd
最好的方向是什么? 是否以某种方式将用户从 NIS 导出到某个文件并将其映射到/etc/passwd?
最佳答案
由于您是从脚本运行 Docker,因此您可以添加一些自动化操作来将必要的信息提取到临时文件中。像这样的事情:
getent passwd $(id -un) > /tmp/passwd.docker
getent group $(id -gn) > /tmp/group.docker
getent
命令在系统上配置的任何目录源中查找信息,因此它将从 NIS 中提取信息。
然后,您可以将 /tmp/passwd.docker
和 /tmp/group.docker
挂载到容器中。
或者,您可以只生成所需的信息,因为您真正关心的是 uid 和用户名:
cat > /tmp/docker.passwd <<EOF
$LOGNAME:x:$(id -u):$(id -g):fake entry:$HOME:/bin/bash
EOF
等等
关于linux - 当使用 Linux NIS(网络信息服务)管理用户时,如何使用当前主机用户运行 docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65718839/