1、安全设定
(1)镜像安全
使用安全镜像
去除镜像setuid和setgid权限
最小安装
Docker内容信任
安全漏洞扫描
非root用户运行
(2)容器安全
docker主机安全加固
限制网络流量
配置守护程序的TLS身份认证
用户命名空间支持
限制容器的cpu及内存
2、命名空间
当启动一个容器时,Docker将会为容器创建独立一个独立的命名空间用于隔离,通过该命名空间完成容器最基础的功能。
例:
3、控制组资源
当启动一个容器时,Docker将会为容器创建一个独立的控制组资源,其中包含内存,cpu,io等,当某一容器出现资源问题时不会影响主机和其他容器。
内存资源路径:/sys/fs/cgroup/memory/docker/
那一长串的序列由docker为容器创建的资源控制组
cpu资源路径:/sys/fs/cgroup/cpu/docker
(1)测试
1、限制cpu占用量
命令:docker run -it --name ub1 --cpu-quota 20000 ubuntu:latest
命令:cat cpu.cfs_quota_us
2、限制内存
docker run -it --name ub2 --memory 200MB --memory-swap 300MB ubuntu:latest
3、限制io
oflag=direct 不经过内存直接写入磁盘
4、设置特权
选项为--privileged=true
5、设置权限白名单
--cap-add
4、使用lxcfs增强docker隔离性和资源可见性
(1)安装lxcfs
(2)启动lxcfs
命令:lxcfs /var/lib/lxcfs &
(3)使用容器进行测试
docker run -it --name ub1 --memory 150MB --memory-swap 150MB \
> -v /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo:rw \
> -v /var/lib/lxcfs/proc/diskstats:/proc/diskstats:rw \
> -v /var/lib/lxcfs/proc/meminfo:/proc/meminfo:rw \
> -v /var/lib/lxcfs/proc/stat:/proc/stat:rw \
> -v /var/lib/lxcfs/proc/swaps:/proc/swaps:rw \
> -v /var/lib/lxcfs/proc/uptime:/proc/uptime:rw \
> ubuntu:latest