我正在使用一个Docker映像,它是使用USER命令构建的,以使用一个称为dev的非根用户。 在容器中,我是“dev”,但我想编辑/etc/hosts文件。
所以我需要是根。我正在尝试su命令,但要求我输入根密码。
Docker容器中root用户的默认密码是什么?
我正在使用一个Docker映像,它是使用USER命令构建的,以使用一个称为dev的非根用户。 在容器中,我是“dev”,但我想编辑/etc/hosts文件。
所以我需要是根。我正在尝试su命令,但要求我输入根密码。
Docker容器中root用户的默认密码是什么?
当前回答
'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的最终依赖。
其他回答
您可以以根用户身份SSH进入docker容器
docker exec -it --user root <container_id> /bin/bash
然后使用此命令修改root密码
passwd root
通过输入确保sudo已安装
sudo
如果没有安装,请安装
apt-get install sudo
如果需要为用户dev赋予sudo权限,可以将用户dev添加到sudo组
usermod -aG sudo dev
现在,您可以在容器内从您的开发用户运行sudo级别的命令,或者您可以使用前面设置的密码在容器内切换到root。
要测试它,请以用户dev登录,并列出根目录的内容,通常只有根用户才能访问。
sudo ls -la /root
输入dev的密码
如果您的用户在正确的组中,并且您正确地输入了密码,那么您使用sudo发出的命令应该以root权限运行。
最后,我决定重新构建Docker映像,这样我就可以用我知道的东西来更改根密码。
RUN echo 'root:Docker!' | chpasswd
or
RUN echo 'Docker!' | passwd --stdin root
默认情况下,docker容器以root用户运行。
如果您仍在使用容器,可以使用exit命令返回root(默认用户)用户,而不是再次运行容器。
的例子,
[dev@6c4c86bccf93 ~]$ ls
[dev@6c4c86bccf93 ~]$ other-commands..
[dev@6c4c86bccf93 ~]$ exit
[root@6c4c86bccf93 /]# ls
我可以用下面的命令让它工作。
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