如何解决如何为docker映像中的二进制文件设置大小 参考资料
我想为docker映像中的某些二进制文件设置功能,以便我可以在具有非root用户的容器中执行它们,我尝试在dockerfile中设置setcap:dockerfile,然后构建使用docker build:docker build创建此映像,但是当我使用该映像创建容器时,找不到文件no capability的任何功能集。这是一个Docker错误吗?还是有其他方法为Docker映像中的文件设置功能?
解决方法
我以cap_net_admin
和ip
为例。
在下面的 Dockerfile 中,/bin/ip
已授予 cap_net_admin
许可。
FROM debian
RUN useradd -m alice -s /bin/bash \
&& setcap cap_net_admin+ep /bin/ip
USER alice
CMD ["/bin/ip","link","show"]
但是建好之后好像不行了。
$ docker build -t cap .
$ docker run --rm cap
standard_init_linux.go:219: exec user process caused: operation not permitted
那是因为 Docker 运行时限制了许可。
如果你真的想这样做,--cap-add
是必要的。
$ docker run --rm --cap-add=cap_net_admin cap
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
43: eth0@if44: <BROADCAST,MULTICAST,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
在 K8s 中,你可能需要这样的东西:
spec:
containers:
- name: cap-test
image: cap
securityContext:
capabilities:
add: ["NET_ADMIN"]
参考资料
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。