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 

有几种方法可以做到这一点。

  1. 运行docker覆盖USER设置

docker exec -u 0 -it containerName bash

  1. 在Docker文件中构build镜像期间,创build必要的文件权限等

  2. 如果所有的软件包都在你的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