【问题标题】:How do I become root in a docker container如何在 docker 容器中成为 root
【发布时间】:2020-02-02 16:31:07
【问题描述】:

我在本地机器上运行这个命令 docker run -d --name SonarQube -p 9000:9000 -p 9092:9092 sonarqube

这会从 dockerhub 获取分支的图像,然后创建图像的容器。现在我想对文件进行一些更改,但容器中没有编辑器。我尝试使用 apt-get 安装 vi,但它说我需要成为 root 用户才能执行命令,当我写 sudo 时它说找不到命令。如何在容器中安装编辑器?

我运行这个命令来安装 vim sudo apt-get install vim

这是我得到的错误

bash: sudo: 找不到命令

【问题讨论】:

  • 请分享确切的命令和错误
  • 只需挂载您要更改的文件即可。
  • 正如乔问的那样,您要更改什么文件?通常使用 docker 容器时,您不想直接更改图像。
  • 我想修改配置文件
  • 你必须已经是容器内的root用户,除非用户被创建并特别指定

标签: docker


【解决方案1】:

尝试将用户传递给 docker run 命令。

docker run -it --user root --name SonarQube -p 9000:9000 -p 9092:9092 sonarqube

但您可能会看到这种方法同样的问题,因为这将使用root 启动容器,而不是sonarqube 用户。

所以我会建议采用以下方法。

FROM sonarqube
USER root
RUN apt-get update \
    && apt-get install -y vim
USER sonarqube
ENTRYPOINT ["./bin/run.sh"]

用户

root (id = 0) 是容器内的默认用户。图片 开发人员可以创建其他用户。这些用户可以通过 姓名。传递数字 ID 时,用户不必存在于 容器。

开发者可以设置一个默认用户来运行第一个进程 Dockerfile 用户指令。启动容器时,操作员 可以通过传递 -u 选项来覆盖 USER 指令。

-u="", --user="": Sets the username or UID used and optionally the groupname or GID for the specified command.

The followings examples are all valid:
--user=[ user | user:group | uid | uid:gid | user:gid | uid:group ]

reference-run

【讨论】:

    【解决方案2】:

    根据https://hub.docker.com/_/sonarqube/ 的 Sonorqube Docker 信息,配置文件位于绑定挂载的持久卷中。您可以在本地目录中更改配置

    图像包含位于 /opt/sonarqube 的 SonarQube 安装。你 可以使用绑定挂载的持久卷覆盖选定的文件或 目录,例如:

    sonarqube_conf:/opt/sonarqube/conf:配置文件,如 声纳属性​​p>

    或者你可以在命令行中指定它们

    > $ docker run -d --name sonarqube \  
    >     -p 9000:9000 \  
    >     -v /path/to/conf:/opt/sonarqube/conf \  
    >     -v /path/to/data:/opt/sonarqube/data \  
    >     -v /path/to/logs:/opt/sonarqube/logs \  
    >     -v /path/to/extensions:/opt/sonarqube/extensions \  
    >     sonarqube
    

    您应该尽量不要直接在 Docker 容器中编辑文件。如果您确实需要在运行的容器中获取文件,请尝试在本地编辑文件并将 Docker cp 到容器中

    https://docs.docker.com/engine/reference/commandline/cp/

    docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

    如果您仍然真的想在容器中使用 sudo,请参阅此 SO 帖子,它可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2015-04-27
      相关资源
      最近更新 更多