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

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

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


当前回答

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

 docker exec -itu 0 CONTAINER_ID bash

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

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

其他回答

'ubuntu'用户的密码是'ubuntu'(至少在docker中ubuntu:14.04.03)。

注意:'ubuntu'是在容器启动后创建的,所以,如果你这样做:

 docker run -i -t --entrypoint /bin/bash  ubuntu     

您将直接得到根提示符。在这里你可以强制修改root用户的密码,提交容器并将其标记为ubuntu:latest(使用-f),如下所示:

root@ec384466fbbb:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@ec384466fbbb:~# exit

% docker commit ec3844
5d3c03e7d6d861ce519fe33b184cd477b8ad03247ffe19b2a57d3f0992d71bca

docker tag -f 5d3c ubuntu:latest

你必须重新构建你对ubuntu:latest的最终依赖。

我建议一个更好的解决方案是在启动容器时给docker run——add-host NAME:IP参数。这将更新/etc/hosts/文件,而不需要成为根用户。

否则,你可以通过给docker run -u USER标志来覆盖USER设置。然而,我不建议这样做,因为你不应该在一个运行的容器中更改东西。相反,在Dockerfile中进行更改并构建一个新映像。

当您启动容器时,您将是root,但您不知道root的pw是什么。要设置它为你知道的东西,只需使用“passwd root”。快照/提交容器以保存您的操作。

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

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

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

docker ps

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

yum install -y passwd

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

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

在运行的容器中创建/更改根密码

docker exec -itu 0 {container} passwd