码迷,mamicode.com
首页 > 其他好文 > 详细

命令简单应用--docker

时间:2019-07-19 12:15:04      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:必须   drive   find   虚拟   水平   守护   执行   权限   block   

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

一个完整的Docker有以下几个部分组成:

DockerClient客户端

Docker Daemon守护进程

Docker Image镜像

DockerContainer容器

常用和须理解的项
1、日志和审核
  
  收集和归档与Docker相关的安全日志来达到审核和监督的目的。从host[8],可以使用下面的命令来访问容器外的日志文件:
  docker run -v /dev/log:/dev/log/bin/sh
  使用Docker命令内置:
  docker logs ... (-f to follow log output)
  日志文件也可以从持续存储导出到一个使用压缩包里面:
  docker export ...

2、.SELinux 或 AppArmor
  
  Linux的内部安全模块,例如通过访问控制的安全策略来配置安全增强型Linux(SELinux)和AppArmor,从而实现强制性的访问控制(MAC)一套有限的系统资源的限制进程,如果先前已经安装和配置过SELinux,那么它可以使用setenforce 1在容器中被激活。Docker程序的SELinux支持是默认无效的,并且需要使用—selinux功能来被激活。通过使用新增的—security-opt来加载SELinux或者AppArmor的策略对容器的标签限制进行配置。该功能已经在Docker版本1.3[9]中介绍过。例如:
  docker run --security-opt=secdriver:name:value -i -t centos bash

3、守护特权
  
  不要使用--privileged命令行选项。这本来允许容器来访问主机上的所有设备,并为容器提供一个特定的LSM配置(例如SELinux或AppArmor),而这将给予如主机上运行的程序同样水平的访问。避免使用--privileged有助于减少主机泄露的***面和潜力。然而,这并不意味着程序将没有优先权的运行,当然这些优先权在最新的版本中还是必须的。发布新程序和容器的能力只能被赋予到值得信任的用户上。通过利用-u选项尽量减少容器内强制执行的权限。例如:
  docker run -u-it/bin/bash
  Docker组的任何用户部分可能最终从容器中的主机上获得根源
4、cgroups
  
  为了防止通过系统资源耗尽的DDoS***,可以使用特定的命令行参数被来进行一些资源限制。
  CPU使用率:
  docker run -it --rm --cpuset=0,1 -c 2 ...
  内存使用:
  docker run -it --rm -m 128m ...
  存储使用:
  docker -d --storage-opt dm.basesize=5G
  磁盘I/O:
  不支持Docker。BlockIO*属性可以通过systemd暴露,并且在支持操作系统中被用来控制磁盘的使用配额。

5、二进制SUID/GUID
  
  SUID和GUID二进制文件不稳定的时候容易受到***,而这个时候是很危险的,,导致任意代码执行(如缓冲区溢出),因为它们会进程的文件所有者或组的上下文中运行。如果可能的话,禁止SUID和SGID使用特定的命令行参数来降低容器的功能。
  docker run -it --rm --cap-drop SETUID --cap-drop SETGID ...
  另一选择,可以考虑运用通过安装有nosuid属性的文件系统来移除掉SUID能力。
  最后一个选择是从系统中彻底删除不需要的SUID和GUID二进制文件。这些类型的二进制文件可以在Linux系统中运行以下命令而找到:
  find / -perm -4000 -exec ls -l {} \; 2>/dev/null
  find / -perm -2000 -exec ls -l {} \; 2>/dev/null
  可以使用类似于下面的[11]命令将SUID和GUID文件权限删除然后:
  sudo chmod u-s filename sudo chmod -R g-s directory

*6、设备控制组(/dev/) **
  
  如果需要,使用内置的设备选项(不使用-v与--privileged参数)。此功能在推出1.2版本[12]。
  例如(声卡使用):
  docker run --device=/dev/snd:/dev/snd …

命令简单应用--docker

标签:必须   drive   find   虚拟   水平   守护   执行   权限   block   

原文地址:https://blog.51cto.com/13120271/2421657

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!