Docker容器的安全性,很大程度上依赖于Linux系统自身,评估Docker的安全性时,主要考虑以下几个方面:
Linux内核的命名空间机制提供的容器隔离安全
Linux控制组机制对容器资源的控制能力安全。
Linux内核的能力机制所带来的操作权限安全
Docker程序(特别是服务端)本身的抗攻击性。
其他安全增强机制对容器安全性的影响。
命名空间隔离的安全
当docker run启动一个容器时,Docker将在后台为容器创建一个独立的命名空间。命名空间提供了最基础也最直接的隔离。
与虚拟机方式相比,通过Linux namespace来实现的隔离不是那么彻底。
容器只是运行在宿主机上的一种特殊的进程,那么多个容器之间使用的就还是同一个宿主机的操作系统内核。
在 Linux 内核中,有很多资源和对象是不能被 Namespace 化的
1.容器资源控制
cpu限额
2 . 内存限制
内存限制
容器可用内存包括两个部分:物理内存和swap交换分区。
docker run -it --memory 200M --memory-swap=200M ubuntu ##也可以修改文件内容来设置memory和swap大小
–memory设置内存使用限额
–memory-swap设置swap交换分区限额
[root@server2 x1]# echo 209715200 > memory.limit_in_bytes ##设置限制的内存大小
/dev/shm ##内存目录 cgexec -g memory:x1 dd if=/dev/zero of=bigfile bs=1M count=300 ##指令进行内存大小的设置
3.Block IO限制
[root@server1 ~]
bash-4.2
dd: invalid output flag: 'firect'
Try 'dd --help' for more information.
bash-4.2
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 6.65298 s, 31.5 MB/s
bash-4.2
200+0 records in
3.1 利用LXCFS增强docker容器隔离性和资源可见性
[root@server2 ~]
[root@server2 ~]
a70daca533d0: Loading layer 75.16MB/75.16MB
Loaded image: ubuntu:latest
[root@server2 ~]
[root@server2 lxcfs]
root@e7baa34b9754:/
total used free shared buff/cache available
Mem: 256 0 255 6 0 255
Swap: 256 0 256
root@e7baa34b9754:/
3.2 设置特权
3.3 设置容器白名单:添加必要权限
|