我正在使用一个Docker映像,它是使用USER命令构建的,以使用一个称为dev的非根用户。 在容器中,我是“dev”,但我想编辑/etc/hosts文件。
所以我需要是根。我正在尝试su命令,但要求我输入根密码。
Docker容器中root用户的默认密码是什么?
我正在使用一个Docker映像,它是使用USER命令构建的,以使用一个称为dev的非根用户。 在容器中,我是“dev”,但我想编辑/etc/hosts文件。
所以我需要是根。我正在尝试su命令,但要求我输入根密码。
Docker容器中root用户的默认密码是什么?
当前回答
您可以以根用户身份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 exec -u 0 -it <MyContainer> bash
root@MyContainer:/# passwd
Enter new UNIX password:
Retype new UNIX password:
尝试以下命令获得根访问权限
$ sudo -i
我可以用下面的命令让它工作。
root@gitnew:# docker exec -it --user $(username) $(containername) /bin/bash
上面的一些答案是不错的,尤其是像这样的:
docker exec -u root -it CONTAINERID /bin/bash
从答案的第一列中获取CONTAINERID:
docker ps
这让你扎根,你可以做任何你想做的事。但前提是该命令存在于容器中。为了做一些像修改根密码这样简单的事情(正如上面许多人建议的那样),我不得不关闭我的VPN并做:
yum install -y passwd
当我在那里时,我安装了vim和sudo,以备将来需要。
请注意:passwd不会让您使用简单的密码。
我建议一个更好的解决方案是在启动容器时给docker run——add-host NAME:IP参数。这将更新/etc/hosts/文件,而不需要成为根用户。
否则,你可以通过给docker run -u USER标志来覆盖USER设置。然而,我不建议这样做,因为你不应该在一个运行的容器中更改东西。相反,在Dockerfile中进行更改并构建一个新映像。