我正在使用一个Docker映像,它是使用USER命令构建的,以使用一个称为dev的非根用户。 在容器中,我是“dev”,但我想编辑/etc/hosts文件。

所以我需要是根。我正在尝试su命令,但要求我输入根密码。

Docker容器中root用户的默认密码是什么?


当前回答

我可以用下面的命令让它工作。

root@gitnew:# docker exec -it --user $(username) $(containername) /bin/bash

其他回答

为了避免重新构建容器,请执行以下步骤:

docker exec -u 0 -it containerName bash sudo visudo 在文件末尾添加如下内容:

your_username ALL=(ALL:ALL) ALL

在我的例子中,我使用ubuntu作为我的用户名,所以它是这样的:

ubuntu ALL=(ALL) NOPASSWD: ALL

保存文件,重新连接到docker容器,并将sudo连接到您的hearts大陆。

好处:如果你想更新docker镜像,你可以做以下事情:

docker commit containerName NewImage

有几种方法可以做到。

运行覆盖USER设置的Docker docker exec -u 0 -it containerName bash

or

docker exec -u root -it --workdir / <containerName> bash

在Docker文件的镜像构建过程中,设置必要的文件权限等 如果您的Linux映像中所有的包都可用,那么在dockerfile中USER实用程序之前输入chpasswin。

完整参考:http://muralitechblog.com/root-password-of-a-docker-container/

最后,我决定重新构建Docker映像,这样我就可以用我知道的东西来更改根密码。

RUN echo 'root:Docker!' | chpasswd

or

RUN echo 'Docker!' | passwd --stdin root 

获取正在运行的容器的外壳并更改根通道。

docker exec -u 0 -it <MyContainer> bash

root@MyContainer:/# passwd
Enter new UNIX password: 
Retype new UNIX password: 

上面的一些答案是不错的,尤其是像这样的:

docker exec -u root -it CONTAINERID /bin/bash

从答案的第一列中获取CONTAINERID:

docker ps

这让你扎根,你可以做任何你想做的事。但前提是该命令存在于容器中。为了做一些像修改根密码这样简单的事情(正如上面许多人建议的那样),我不得不关闭我的VPN并做:

yum install -y passwd

当我在那里时,我安装了vim和sudo,以备将来需要。

请注意:passwd不会让您使用简单的密码。