无法在 Docker 中运行 visudo;sudoers 文件不存在

无法在 Docker 中运行 visudo;sudoers 文件不存在

我是 Ubuntu 新手。我正在使用以下简单的 Dockerfile 来修改我创建的 Docker 容器:

FROM ubuntu
CMD ["tail","-f","/dev/null"]

在容器内部,作为 root 用户,我尝试运行visudo并得到以下响应:

bash:visudo:未找到命令

我运行了一下ls /etc,似乎我也没有 sudoers 文件。

我是否应该在 Dockerfile 中添加一些特殊内容才能使它们存在?

答案1

我从另一个答案sudo默认情况下未安装。要安装sudo

apt-get update
apt-get install sudo

答案2

当您构建容器时,您是 root 权限用户,因此您无需 sudo 即可创建用户。

如果您要派生一个已有指令的容器映像,您仍然可以在使用特权命令之前USER再次成为 root用户。您可以稍后发出另一个指令以再次成为执行用户。换句话说:USER rootUSER

设置非特权用户的图像:

# "plainuser" image
FROM debian
RUN groupadd -g 1000 appgroup && useradd -g appgroup -u 1000 appuser
USER appuser
ENTRYPOINT ["/usr/bin/id"]

运行以docker run --rm plainuser检查它确实与用户一起运行appuser

我们来推导一下:

# "otheruser" image
FROM plainuser
USER root  # Become root again
RUN groupadd -g 1001 appgroup2 && useradd -g appgroup2 -u 1001 appuser2
USER appuser2 # Set new execution user

用 运行docker run --rm otheruser

相关内容