linux cpu占用率如何看
241
2022-10-17
docker实践方案总结
一、程序
1、程序代码存储位置
方案一:存储在共享存储中方案二:存储到docker容器中
探讨:看是什么语言? py php可以边车,如果是java。最好直接打进去。否则再编译一次。不是一次打包到处部署的最佳实践。其实按最佳说法。保证制品一次的话。都应当打在一起。如果不打在一起。看你们分支规范了。怎么确定代码没有被修改。保证发布的代码是qa验证过的。把代码跟容器分开,我觉得比较好维护,特别是代码需要经常修改的情况,不需要重新build容器;如果你们的运行场景是需要大批量节点部署,那么打包在一起可能更好发布。总结:后端不仅仅有Java,还有Node.js和Python,所以需要根据语言制定不同的策略了:根据语言去确定策略,静态语言直接打好包最简单,动态语言可以把安装依赖的流程写到Dockerfile中去执行或者用sidecar模式去加载。
二、安全防护与配置
1、Linux内核的命名空间机制提供的容器隔离安全
命名空间提供了最基础也是最直接的隔离。通过命名空间来实现的隔离并不是那么绝对。运行在容器中的应用可以直接访问系统内核和部分系统文件。所以,用户必须保证容器中应用时安全可信的,否则本地系统将可能受到影响,必须保证镜像的来源和自身可靠。
docker1.3.0对镜像管理引入了签名系统,用户可以通过签名来验证镜像的完整性和正确性。
2、Linux控制组机制对容器资源的控制能力安全
控制组是Linux容器机制中的另外一个关键组件,它负责实现资源的审计和限制。
当单容器受到供给或出现异常时,可以保证本地系统和其他容器正常运行而不受影响,从而避免引发“雪崩”灾难。
3、Linux内核的能力机制所带来的操作权限安全
能力机制(capability)是Linux内核一个强大的特性,可以提供细粒度的权限访问控制。
默认情况下,docker启动的容器被严格限制只允许使用内核的一部分能力。使用能力机制对加强docker容器的安全性有很多好处。
大部分情况下,容器并不需要“真正的”root权限,容器只需要少数的能力即可。为了加强安全,容器可以禁用一些没必要的权限。这样攻击者取得了root权限,也不能获得本地主机的较高权限,能进行的破坏有限。
禁止任何文件挂载操作禁止直接访问本地本地主机的套接字禁止访问一些文件系统的操作,比如创建新的设备、修改文件属性等禁止模块加载
4、docker程序(服务端)本身的抗攻击性
使用docker容器的核心是docker服务端。docker服务的运行目前还需要root权限的支持,因为服务端安全性十分重要。
必须只有可信的用户才能访问到docker服务。docker允许用户在主机和容器见共享文件夹,同时不需要限制容器的访问权限,这就容易让容器突破资源限制。当提供同期创建服务时,要更加注意进行参数的安全检查,防止恶意的用户用特定参数来创建一些破坏性容器。
docker的REST API使用本地的Unix套接字,保护服务端。Linux命令空间机制将可以实现使用非root用户来运行全功能的容器。
5、其他安全增强机制(selinux等)对容器安全性的影响
docker默认只启用了能力机制,用户可以选择启用更多的安全方案(selinux)来加强docker主机的安全。
在内核中启动GRSEC和PAX,这将增加更多的变异和运行时的安全检查;并且通过地址随机化机制来避免恶意探测。启用该特性不需要docker进行任何配置。用户可以自定义访问控制机制来定制安全策略。在文件系统挂载到容器内部时候,可以通过配置只读(read-only)模式来避免容器内的应用通过文件系统破坏外部环境
6、通过第三方工具对docker环境的安全性进行评估
自动化检查的开源工具,比较出名的有dockerbench和chair。
三、重建docker网络
相信有人也遇到过,在做一些iptable 相关操作时,直接 iptable -F将其清空后的,容器网络无法使用的。
1、重建docker网络即可。具体步骤如下:
安装brctlyum install bridge-utils停止docker服务systemctl stop docker重建 docker 网络ifconfig docker0 downbrctl delbr docker0重启docker服务systemctl start docker
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~