docker 容器的安全很大程度上依赖 linux 本身,因为是共享宿主机内核。
docker 安全评估主要考虑以下几个方面:
- linux 内核的命名空间(namespace)机制提供的容器隔离安全
- linux 控制组(cgroup)对容器资源的控制能力安全
- linux 内核的能力机制所带来的操作系统安全
- docker 程序(主要是服务器端)本身的抗攻击能力
- 其他安全增强机制的影响
- 命名空间隔离安全: docker run 启动一个容器时,后台会为容器创建一个独立的命名空间,
这是最基础的隔离,让容器作为一个独立的个体存在
- 但是这种方式与传统虚拟机相比,隔离的不彻底,因为容器就是一个进程,那么多个容器就还 是共用宿主机的内核
- 在 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中怎样去限制哪?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/186244.html