我正在使用一个Docker映像,它是使用USER命令构建的,以使用一个称为dev的非根用户。 在容器中,我是“dev”,但我想编辑/etc/hosts文件。
所以我需要是根。我正在尝试su命令,但要求我输入根密码。
Docker容器中root用户的默认密码是什么?
我正在使用一个Docker映像,它是使用USER命令构建的,以使用一个称为dev的非根用户。 在容器中,我是“dev”,但我想编辑/etc/hosts文件。
所以我需要是根。我正在尝试su命令,但要求我输入根密码。
Docker容器中root用户的默认密码是什么?
当前回答
在某些情况下,您需要能够在用户下使用sudo做这样的事情(例如,在容器中运行的应用程序为用户提供了一个shell)。简单地添加到你的Dockerfile:
RUN apt-get update # If necessary
RUN apt-get install sudo # If your base image does not contain sudo.
RUN useradd -m -N -s /bin/bash -u 1000 -p '$1$miTOHCYy$K.c4Yw.edukWJ7z9rbpTZ0' user && \
usermod -aG sudo user # Grant sudo to the user
USER user
现在,在默认映像用户user下,您将能够使用第3行设置的密码sudo。
查看如何为useradd生成密码哈希在这里或这里。
其他回答
docker exec -u 0 -it containername bash
我建议一个更好的解决方案是在启动容器时给docker run——add-host NAME:IP参数。这将更新/etc/hosts/文件,而不需要成为根用户。
否则,你可以通过给docker run -u USER标志来覆盖USER设置。然而,我不建议这样做,因为你不应该在一个运行的容器中更改东西。相反,在Dockerfile中进行更改并构建一个新映像。
当您启动容器时,您将是root,但您不知道root的pw是什么。要设置它为你知道的东西,只需使用“passwd root”。快照/提交容器以保存您的操作。
尝试以下命令获得根访问权限
$ sudo -i
在运行的容器中创建/更改根密码
docker exec -itu 0 {container} passwd