在Docker中为root用户设置密码

5 浏览
0 Comments

在Docker中为root用户设置密码

在Docker中是否可以更改root用户密码?我在我的alpine docker中有以下代码:\n

RUN echo “root:Dev123” | chpasswd  
RUN adduser appuser -D  
USER appuser

\n我期望以下操作:\n1. 更改root用户密码\n2. 在docker中添加一个名为\"appuser\"的新用户\n3. 使用\"appuser\"启动Docker容器\n步骤2和3执行良好,我可以看到Docker以\"appuser\"用户启动,但是也可以像下面这样以\"root\"身份运行Docker容器:\n

docker container run -it --user root myimg:latest sh

\n而不需要输入root密码,因此我认为要么无法更改密码,要么Docker核心某种程度上知道新密码。

0
0 Comments

问题:在Docker中为root用户设置密码的原因和解决方法。

原因:在Docker中为root用户设置密码的原因是为了增加安全性。如果root用户没有密码,那么任何人都可以使用root权限启动容器或在运行中的容器上以root身份执行命令。

解决方法:可以通过手动生成/etc/shadow文件中的一行来实现。可以使用sed命令将RUN步骤中的第一行(定义root密码的行)替换为新生成的行。这样可以为root用户设置密码。

这种方法并不能阻止任何人以root身份启动容器或在运行中的容器上以root身份执行命令(如OP所要求的docker run/exec -u root)。另一个问题是:“为什么要在Docker镜像中更改root密码?”我永远不会使用root密码设置为已知值的镜像。

0