linux - 当使用 Linux NIS(网络信息服务)管理用户时,如何使用当前主机用户运行 docker

标签 linux docker ubuntu nis

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

相关文章:

linux - 如何从linux ubuntu中的包安装

docker - 将文件从计算机移至容器Docker

ubuntu - 无法在命令行上打开 VS Code

ubuntu - 如何更改 oh my zsh 中的提示并向其中添加主机名?

windows - Ubuntu 启动菜单

c - 获取错误 :Too few arguments where i clearly have the correct number

linux - 模拟鼠标事件linux

linux - 按大小查找文件更多 MIN 和更少 MAX

php - 如何使用dokku导入mysql数据库

docker - "groupadd: Command not found"在 docker 容器中,即使我安装它并且我是 root