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

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

Docker容器中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不会让您使用简单的密码。

尝试以下命令获得根访问权限

$ sudo -i 

当使用-u选项时,您可以使用root用户(ID = 0)而不是提供的默认用户登录Docker容器。如。

docker exec -u 0 -it mycontainer bash

Root (id = 0)是容器中的默认用户。图像 开发人员可以创建其他用户。可以访问这些用户 的名字。当传递数字ID时,用户不必存在于 的容器中。

摘自Docker文档

更新:当然你也可以使用Docker容器管理命令来运行这个:

Docker容器exec -u 0 -它mycontainer bash

在docker容器中设置固定的根密码可能会危及系统,因此不应该使用。相反,你可以用:

 docker exec -itu 0 CONTAINER_ID bash

当容器启动并运行时,只要您希望访问容器的根权限。

上面的命令假设您希望运行bash作为shell。 我不使用MS Windows,但我猜如果你在MS Windows机器上,你可能会尝试CMD或CMD. exe而不是bash。

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

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