有没有办法 运行 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具有第一阶段的权限。
这可能是个愚蠢的问题,但我还是要问...
如果我 运行 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具有第一阶段的权限。