如果它是基于非sudo基本映像构建的,是否可以将docker容器作为sudo运行?

时间:2019-12-17 16:28:35

标签: docker gdb fedora sudo ptrace

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

如果我运行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),但是没有用。因此,我的下一个猜测是,按照同一篇文章中的建议,以超级用户身份尝试使用此功能。

2 个答案:

答案 0 :(得分: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中以切换用户。

答案 1 :(得分:0)

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