1

我想用我的主机帐户运行 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?

4

1 回答 1

2

由于您是从脚本运行 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

等等。

于 2021-01-14T13:59:20.523 回答