Docker容器的安全性,很大程度上依赖于Linux系统自身,评估Docker的安全性时,主要考虑以下几个方面∶
●Linux内核的命名空间机制提供的容器隔离安全
●Linux控制组机制对容器资源的控制能力安全。
●Linux内核的能力机制所带来的操作权限安全
●Docker程序(特别是服务端)本身的抗攻击性。
●其他安全增强机制对容器安全性的影响。
在使用 docker 运行容器时,默认的情况下,docker没有对容器进行硬件资源的限制,当一台主机上运行几百个容器,这些容器虽然互相隔离,但是底层却使用着相同的 CPU、内存和磁盘资源。如果不对容器使用的资源进行限制,那么容器之间会互相影响,小的来说会导致容器资源使用不公平;大的来说,可能会导致主机和集群资源耗尽,服务完全不可用。
docker 作为容器的管理者,自然提供了控制容器资源的功能。正如使用内核的 namespace 来做容器之间的隔离,docker 也是通过内核的 cgroups 来做容器的资源限制;包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制
1. 命名空间隔离的安全
当docker run启动一个容器时,Docker将在后台为容器创建一个独立的命名空间。命名空间提供了最基础也最直接的隔离,它不能进行一个完全彻底的隔离。 容器只是运行在宿主机上的一种特殊的进程,那么多个容器之间使用的就还是同一个宿主机的操作系统内核。 在 Linux 内核中,有很多资源和对象是不能被 Namespace 化的,比如:时间。
docker run -it --name vm1ubuntu ##运行一个容器 ,ctrl&