有没有办法 运行 docker 容器作为 sudo,如果它是建立在非 sudo 基础图像上的?

Is there a way to run a docker container as sudo, if it was build on a non sudo base-image?

这可能是个愚蠢的问题,但我还是要问...

如果我 运行 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),但没有用。所以我的下一个猜测是按照相同 post.

中的建议,以超级用户身份尝试此操作

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 以切换用户。

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