以具有sudo访问权限的用户身份运行Ubuntu Docker容器

6 浏览
0 Comments

以具有sudo访问权限的用户身份运行Ubuntu Docker容器

我正在尝试编写一个Dockerfile,它创建一个具有家目录的用户,该用户属于sudoers组,并以该用户身份启动容器。\n我面临的问题是,在容器内部,每个命令都需要在前面加上sudo,这显然会导致创建的每个文件都出现权限问题。\n我这样做的原因是我想要一个模拟干净的Linux环境的容器,以便我可以为用户编写安装脚本。\n以下是我目前的Dockerfile副本:\n

FROM ubuntu:20.04
# 创建用户家目录
RUN mkdir -p /home/nick
# 创建一个名为nick的用户
RUN useradd -r -d /home/nick -m -s /sbin/nologin -c "Docker image user" nick
# 添加到sudoers组
RUN usermod -a -G sudo nick
# 更改家目录的所有权
RUN chown -R nick:nick $HOME
# 设置密码
RUN echo "nick:******" | chpasswd
# 安装sudo
RUN apt-get -y update && apt-get -y install sudo
ENV HOME=/home/nick
WORKDIR $HOME
USER nick

0
0 Comments

问题出现的原因是在Docker容器中以普通用户身份运行时,无法使用sudo命令。解决方法是将用户添加到sudo组中。

解决方法如下:

1. 在Dockerfile中添加创建用户并设置密码的步骤:

RUN useradd -m bot
RUN echo "bot:bot" | chpasswd

2. 添加用户到sudo组中:

RUN adduser bot sudo

3. 在Dockerfile中指定以bot用户身份运行容器:

USER bot

通过以上步骤,可以在Docker容器中以普通用户身份运行,并具备sudo权限。

0