我是 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 root
USER
设置非特权用户的图像:
# "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
。