Docker容器内的根密码
我使用的是使用USER命令构build的docker镜像来使用非root.called dev。 在容器内部,我是“dev”,但是我想编辑/ etc / hosts文件。 所以我需要成为根。 我正在尝试su命令,但我被要求inputroot密码。
Docker容器中默认的root用户密码是什么?
当使用-u
选项时,可以使用root用户(ID = 0)而不是提供的默认用户login到Docker Image。 例如
docker exec -u 0 -it mycontainer bash
root(id = 0)是容器内的默认用户。 图像开发人员可以创build额外的用户。 这些用户可以通过名称访问。 传递数字标识时,用户不必在容器中存在。
来自Docker文档
最终,我决定重build我的Docker镜像,这样我就可以通过一些我知道的事情来改变root的密码。
RUN echo "root:Docker!" | chpasswd
我正好有这个问题,因为我作为一个非特权用户在容器中运行,因此无法启动到根目录。
但是我不想像以前的答案所build议的那样重build一个新的图像。
相反,我发现我可以使用'nsenter'作为root访问容器,请参阅: 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
有几种方法可以做到这一点。
- 运行docker覆盖USER设置
docker exec -u 0 -it containerName bash
-
在Docker文件中构build镜像期间,创build必要的文件权限等
-
如果所有的软件包都在你的linux映像中可用,在USER工具之前的dockerfile中
chpasswd
。
我build议一个更好的解决scheme是在启动容器时给Docker运行--add-host NAME:IP
参数。 这将更新/etc/hosts/
文件,而不需要成为root用户。
否则,可以通过将-u USER
标志赋予docker run
来覆盖USER
设置。 然而,我会build议不要这样做,因为你不应该改变正在运行的容器中的东西。 相反,在Dockerfile中进行更改并构build一个新的映像。
ubuntu用户的密码是'ubuntu'(至less在Ubuntu的docker中是14.04.03)。
注意:'ubuntu'是在容器启动后创build的,所以如果你这样做的话:
docker run -i -t --entrypoint /bin/bash ubuntu
你会直接得到根提示。 从那里你可以强制root的密码更改,提交容器,并可以select标记(与-f)到Ubuntu:最新像这样:
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
你必须重build你最终依赖Ubuntu的最新。
我能够得到它与下面的命令
root @ gitnew:#docker exec -it –user $(username)$(containername)/ bin / bash