【问题标题】:Is there a way to run a docker container as sudo, if it was build on a non sudo base-image?如果 docker 容器是在非 sudo 基础映像上构建的,有没有办法将 docker 容器作为 sudo 运行?
【发布时间】:2019-12-17 16:28:35
【问题描述】:

这可能是一个愚蠢的问题,但无论如何我都会问它......

如果我运行docker exec -it <container> /bin/bash,我想成为容器中的超级用户。

<container> 是一个基于 fedora-base-image 的容器,它似乎为我分配了一个非 sudo 功能的用户。

问题:如果基于这样的图像,是否有办法在我的新图像中仍然成为超级用户?

我为什么要这个?我想在这个容器中运行gdb attach,它给了我ptrace: Operation not permitted。我已经尝试过docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --security-opt apparmor=unconfined(比较here),但没有成功。所以我的下一个猜测是按照同一篇文章中的建议以超级用户身份尝试此操作。

【问题讨论】:

    标签: docker gdb fedora sudo ptrace


    【解决方案1】:

    使用docker run,您可以传递用户标志。

    -u, --user string                    Username or UID (format: <name|uid>[:<group|gid>])
    

    我认为 root 的 UID 应该是 0,所以我认为 -u root -u 0 -u root:root 中的任何一个都应该有效?

    如果您正在构建 Dockerfile,您还可以将 USER root 添加到您的 dockerfile 以切换用户。

    【讨论】:

      【解决方案2】:

      一个同样有效的快速解决方法是使用多阶段构建,在第一个构建中以 sudo 开始,在第二阶段执行 RUN sudo chmod +s /usr/bin/gdb,然后在第二阶段使用 COPY 以获得具有第一阶段权限的 gdb .

      【讨论】:

        猜你喜欢
        • 2019-10-04
        • 2013-09-01
        • 1970-01-01
        • 2019-11-06
        • 1970-01-01
        • 2014-11-08
        • 2017-01-30
        相关资源
        最近更新 更多