这可能是一个愚蠢的问题,但是我还是要问这个问题...
如果我运行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),但是没有用。因此,我的下一个猜测是,按照同一篇文章中的建议,以超级用户身份尝试使用此功能。
答案 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从第一阶段开始。