docker容器进程以非root用户身份运行

一、如何确认容器是否使用root用户启动程序


需要用root用户运行Docker?
组织中,经常以Root用户运行Docker中的容器。但是你的工作负载真的需要root权限吗?显然很少。尽管如此,默认情况下,你的容器仍将以root用户身份运行。但这可能会带来严重的安全问题。实际上,如果以root用户运行容器内部的进程,就是以root用户身份运行主机的进程。这就为那些恶意访问主机的攻击者,提供了机会。

只需在常用的任何镜像上使用以下命令,你就可以自己查看它使用的用户身份,

步骤1:通过指令 docker ps 查看运行的容器的:

docker ps |grep  centos_arm:v5

在这里插入图片描述

步骤2:通过指令 docker inspect --format ‘{{.State.Pid }}’ 查看运行容器的:

docker inspect --format '{{.State.Pid }}' 900d14baebc5

在这里插入图片描述

步骤3:通过指令 ps -p -o pid,user 查看容器进程关联的主机用户:

ps -p  351228 -o pid,user

在这里插入图片描述

步骤4:判断容器进程是否以 root 身份运行,如果是以root身份运行则不符合安全要求。

进入容器执行ps -ef

在这里插入图片描述

显然,作为最佳实践,我们应该避免以超级用户身份运行容器。因此,让我们看看如何以非root用户身份运行容器。

二、将非root用户添加到Dockerfile 通过在Dockerfile中使用RUN命令创建用户,这个用户仅具有容器内工作负载所需的权限。


通过在Dockerfile中使用RUN命令创建用户,这个用户仅具有容器内工作负载所需的权限。

创建程序用户

RUN useradd -g root -d  /home/aifgw -s /bin/bash -m aifgw

将在系统中添加一个名为 aifgw 的新用户,其家目录为 /home/aifgw,默认 shell 为 bash,并将其初始组设置为 root

RUN usermod -aG root aifgw
RUN chage -M 99999 aifgw

使用 usermod 命令来修改已存在的用户 aifgw 的附加组

赋权给
RUN chown -R aifgw:root /home/aifgw/nginx
RUN chown -R aifgw:root /root

三、目录etc的文件如何变更


/etc/resolv.conf 配置域名解析的文件
/etc/hosts 主机Host文件
无法成功挂载到容器中
1、通过shell命名无法配置成功
2、通过修改基础镜像,/etc/resolv.conf 和 /etc/hosts,编译为容器后没有挂载成功,经过查询官方文档。
为 /etc/resolv.conf 和 /etc/hosts外置挂载,无法通过dockerfile挂载到容器中。

换一个思路:
通过docker数据卷挂载的方式,自定义配置

在这里插入图片描述

四、启动服务查看进程

启动服务查看进程如下为非root用户。
在这里插入图片描述

共勉篇,方法有很多种总有适合自己工作的一种

任何事情在做决定之前都应该思考,但只有这个意识还远远不够。考虑问题还存在很多深层次的规则和方法,我以为,考虑任何问题需要注意以下几项因素:
1.穷尽大脑思考这个问题的所有解决方案;
2.逐个分析每个方案的利弊,尤其是弊,也就是说如果选择某个方案的最坏结果可能是什么,以及一旦发生了这种最坏结果的应对方法;
3.筛选出最优的2至3个选项,并在做最终决定前对这几个方案进行合理逻辑推演,看哪一个有漏洞、哪一个有风险、哪一个更行得通;
4.做出最终决定,并留好plan B。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值