加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

Docker容器搭建优秀实践

发布时间:2022-02-17 16:14:28 所属栏目:安全 来源:互联网
导读:在容器和虚拟化广泛流行的今天,如何构建出一个安全、洁净的容器是大家都关心的问题。和安全领域对系统的要求一样只安装必须的应用的最小化原则也是容器构建的基本法则。一方面最小化的应用可以减小镜像的大小,节省上传下载的时间,同时减少了容器中的应用
      在容器和虚拟化广泛流行的今天,如何构建出一个安全、洁净的容器是大家都关心的问题。和安全领域对系统的要求一样"只安装必须的应用"的最小化原则也是容器构建的基本法则。一方面最小化的应用可以减小镜像的大小,节省上传下载的时间,同时减少了容器中的应用也就减少了可入侵点,使容器更安全。本文介绍我们给大家介绍了一套总结了业界实践的容器的优秀实践。目的是让容器构建更加快速,更安全,也更具弹性。本文假设读者有一定Docker和Kubernetes了解,但也可以单独作为Docker容器构建守则。
 
      当开始使用容器时,常见的一个误区是把容器当成虚拟机来使。这样做往往会让他们不能轻易满足某些需求而非常痛苦,同时也背离了容器的最大优势点。很多初学者在群里问了很多为么:为什么Docker不能aaa?怎么实现Docker bbb?然后他需要的答案其实上只是需要一个虚拟。虽然现代容器已经可以满足这些需求,但是这会极大减弱容器模型的大多数优点。以经典的Apache/MySQL/PHP堆栈为例,你可能很想在一个容器中运行所有组件。但是,最佳实践是使用两个或三个不同的容器:Apache容器,MySQL容器,和运行PHP-FPM的php容器。由于容器设计思想是容器和托管的应用程序具有相同的生命周期,因此每个容器应当只包含一个应用程序。当容器启动时,应用程序随之启动,当容器停止时,应用也会停止。
 
     容器如果部署了多个应用,则它们有可能具有不同的生命周期或处于不同的状态。例如,一个正在运行的容器,但其核心组件之一突然崩溃或无响应。由于没有额外的运行状况检查,整个容器管理系统(Docker或Kubernetes)将无法判断容器是否健康。在Kubernetes集群中,容器默认是不会重启的。
 
有些公共镜像中可能会使用如下有一些的操作,但不遵循原则:使用进程管理系统(比如supervisor)来管理容器中的一个或多个应用。使用bash脚本作为容器中的入口点,并使其产生多个应用程序作为后台作业。Linux信号是控制容器内进程生命周期的主要方法。为了与前一条最佳实践保持一致,为了将应用程序的生命周期和容器关连,请确保应用程序能够正确处理Linux信号。其中最重要的一个Linux信号是SIGTERM,因为它用来终止进程。应用可能还会收到SIGKILL信号,用于非正常地终止进程,或者SIGINT信号,用于接受,键入的Ctrl + C指令。
 
进程标识符(PID)是Linux内核为每个进程提供的唯一标识符。 PID具有名称空间,容器具有自己的一组PID,这些PID会被映射到宿主机系统的PID。Linux内核启动时会创建第一个进程具有PID1。用来init系统用来管理其他进程,比如systemd或SysV。同样,容器中启动的第一个进程也是PID1。Docker和Kubernetes使用信号与容器内的进程进行通信。Docker和Kubernetes都只能向容器内具有PID 1的进程发送信号。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读