非root运行docker容器

一、非root运行docker容器

1、自己的容器,可以在dockerfile中处理一下

FROM ubuntu:24.04
COPY ./myapp  /myapp

RUN groupadd --gid 5000 newuser \
    && useradd --home-dir /home/newuser --create-home --uid 5000 \
        --gid 5000 --shell /bin/sh --skel /dev/null newuser
USER newuser
CMD  /myapp

2、第三方镜像,Kubernetes中Pod安全上下文和Pod安全策略,可以帮助我们以非root身份运行三方镜像。

3、使用Kubernetes Pod安全策略,可以阻止root启动的容器运行

参考:如何以非root用户运行Docker容器_用非root账号登录pod-CSDN博客

 二、如何用非root用户启动dockerd?

dockerd由于使用了linux domain socket,需要root用户启动,如何用非root用户启动呢?

方法1、sudo

方法2、创建docker用户和用户组,具体是什么原理呢???

参考:docker基础:使用非root用户操作docker_docker 不用root-CSDN博客

 三、如何用非root用户运行tcpdump,ping?

方法1、setuid,setgid

方法2、setcap,getcap

参考:谁说抓包必须用root权限-CSDN博客

ping,tcpdump这个程序,我们可以通过chmod允许普通用户执行,但它访问网卡某些系统调用时,内核要求必须是root用户

ping一般大家以普通用户使用发现没有什么问题,因为操作系统默认给他加了权限。

有的操作系统用的是setuid的方法,可以 ll /bin/ping看一下权限位中有没有s权限

有的操作系统用的是setcap方法,可以用getcap /bin/ping看一下

$ getcap /bin/ping
/bin/ping = cap_net_raw+ep

通过setcap可以设置权限,比如

gaofeng@ubuntu:~/c_code$ ./hello3
main is running
create iSocket error, check root          //没有rawsocket权限

sudo setcap cap_net_admin,cap_net_raw=eip hello3

或 sudo setcap cap_net_raw+eip hello3

也可以用 setcap -r hello3 移除权限设置

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值