我正在使用一个Docker映像,它是使用USER命令构建的,以使用一个称为dev的非根用户。 在容器中,我是“dev”,但我想编辑/etc/hosts文件。
所以我需要是根。我正在尝试su命令,但要求我输入根密码。
Docker容器中root用户的默认密码是什么?
我正在使用一个Docker映像,它是使用USER命令构建的,以使用一个称为dev的非根用户。 在容器中,我是“dev”,但我想编辑/etc/hosts文件。
所以我需要是根。我正在尝试su命令,但要求我输入根密码。
Docker容器中root用户的默认密码是什么?
当前回答
有几种方法可以做到。
运行覆盖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/
其他回答
有几种方法可以做到。
运行覆盖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/
你也可以这样使用它(如果你需要确认密码)
(echo 'myrootpassword'; echo 'myrootpassword') | passwd root
您可以在Dockerfile中使用USER根命令。
获取正在运行的容器的外壳并更改根通道。
docker exec -u 0 -it <MyContainer> bash
root@MyContainer:/# passwd
Enter new UNIX password:
Retype new UNIX password:
我确实遇到了无法su到root的问题,因为我是作为无特权用户在容器中运行的。
但我不想像之前的答案所暗示的那样重建一个新的形象。
相反,我发现我可以使用'nsenter'作为根访问容器,参见:https://github.com/jpetazzo/nsenter
首先确定主机上容器的PID:
docker inspect --format {{.State.Pid}} <container_name_or_ID>
然后使用nsenter以root身份进入容器
nsenter --target <PID> --mount --uts --ipc --net --pid