Docker安全
1.命名空间隔离的安全
当docker run启动一个容器时,Docker将在后台为容器创建一个独立的命名空间。命名空间提供了最基础也最直接的隔离。
[root@server1 ~]# docker inspect demo | grep Pid
"Pid": 5358,
"PidMode": "",
"PidsLimit": null,
[root@server1 ~]# cd /proc/5358
[root@server1 5358]# ls
attr cmdline environ io mem ns pagemap sched stack task
autogroup comm exe limits mountinfo numa_maps patch_state schedstat stat timers
auxv coredump_filter fd loginuid mounts oom_adj personality sessionid statm uid_map
cgroup cpuset fdinfo map_files mountstats oom_score projid_map setgroups status wchan
clear_refs cwd gid_map maps net oom_score_adj root smaps syscall
[root@server1 5358]# cd ns/
[root@server1 ns]# ls
ipc mnt net pid user uts
控制组资源控制的安全
当docker run启动一个容器时,Docker将在后台为容器创建一个独立的控制组策略集合。
[root@server1 ns]# cd /sys/fs/cgroup/
[root@server1 cgroup]# ls
[root@server1 cpu]# ls
[root@server1 cpu]# cd ..
[root@server1 cgroup]# cd cpu/docker/
[root@server1 docker]# ls
9d08dcd3aed3aaf3471839d04e8a1a01b03cb4d10cf9a238573ff310ad5c7e0d
[root@server1 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d08dcd3aed3 nginx "/docker-entrypoint.…" 2 hours ago Up 2 hours 80/tcp demo
[root@server1 docker]# cd 9d08dcd3aed3aaf3471839d04e8a1a01b03cb4d10cf9a238573ff310ad5c7e0d
[root@server1 9d08dcd3aed3aaf3471839d04e8a1a01b03cb4d10cf9a238573ff310ad5c7e0d]# ls
cgroup.clone_children cgroup.procs cpuacct.usage cpu.cfs_period_us cpu.rt_period_us cpu.shares notify_on_release
cgroup.event_control cpuacct.stat cpuacct.usage_percpu cpu.cfs_quota_us cpu.rt_runtime_us cpu.stat tasks
[root@server1 9d08dcd3aed3aaf3471839d04e8a1a01b03cb4d10cf9a238573ff310ad5c7e0d]# cat tasks
5358
5410
2.容器资源控制
2.1内存限制
容器可用内存包括两个部分:物理内存和swap交换分区。
memory设置内存使用限额