docker 容器的安全很大程度上依赖 linux 本身,因为是共享宿主机内核。
docker 安全评估主要考虑以下几个方面:
- linux 内核的命名空间(namespace)机制提供的容器隔离安全
- linux 控制组(cgroup)对容器资源的控制能力安全
- linux 内核的能力机制所带来的操作系统安全
- docker 程序(主要是服务器端)本身的抗攻击能力
- 其他安全增强机制的影响
- 但是这种方式与传统虚拟机相比,隔离的不彻底,因为容器就是一个进程,那么多个容器就还 是共用宿主机的内核
- 在 linux 内核中,有些资源和对象不能被 namespace 化,如:时间,这样机不能保证完全隔离了
- 控制组资源控制安全: docker run 启动一个容器时,后台会为容器创建一个独立的控制组
策略集合
- linux cgroup 还提供了很多有用特性,确保容器可以公平分享主机内存、cpu 等资源
- 确保当容器内资源压力不会影响到宿主机和其他容器,在 DDos 方面必不可少
- 内核能力机制 : 是 linux 内核的一个强大特性,可提供细粒度的权限访问控制
大部分情况下,容器并不需要真正的 root 权限,只要少数能力即可
- docker 服务端的防护:确保只有可信的用户才能访问到 docker 服务;将容器的 root 用户映射到本地主机的非 root 用户,减轻容器和主机之间因权限提升而引起的安全问题;允许docker 服务端在非 root 权限下运行,利用安全可靠的子进程来代理执行需要特权的操作(子进程只允许在特定范围内操作)
- 其他安全特性:使用有增强安全特性的容器模板;用户可以定义更加严格的访问控制机制等
(比如文件系统挂载到容器内部时,设置只读)
- linux Cgroups:组资源控制是限制一个进程组使用资源的上限,包括 cpu、内存、磁盘、带宽等
所以我们可以在 docker 启动是指定使用的内存,cpu 等:
那我们如何在系统中进行设定那:
我们现在在操作系统层面控制(也可以在容器内)
那末我们在手动指定容器试一下:
我们再再容器中用dd 做测试:
容器可用内存包括:物理内存、swap 分区(操作系统也是)。
- 但是一旦切换到 swap 分区,性能就不能保证了,因为 swap 是物理硬盘,当然没有内存快’
- 容器的资源限制很简单 docker run -it --memory 256M --memory-swap=256M ubuntu 就可以了
操作系统层面的限制:
但是这样的文件竟然创建成功了,并没有报错,而且我们发现swap分区少了36M,
这就说明:多出去的不能使用内存,所以使用了 swap,那我们怎么彻底限制哪?
那我们docker中怎样去限制哪?
到此这篇docker 进程守护(docker中的进程会在系统中体现吗)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/82739.html