8种使用Docker容器常见误区

 

8种使用Docker容器常见误区:

  1. 不要以拆分方式进行应用程序发布——有些朋友仍然带着虚拟机思路审视容器。他们大多认为自己应该将应用程序部署至当前正在运行的容器当中。然而,这种作法只适用于开发阶段,从而实现应用开发所必需的持续部署与调试;一旦转移至质量检查与生产环境下的持续部署流程,应用程序则必须作为镜像本身的组成部分。请记住:容器具有恒定特性。
  2. 以非root用户运行进程—— “默认情况下,Docker容器以root方式运行。随着Docker的不断发展成熟,更多更为安全的默认选项亦陆续出现。就目前而言,使用root权限仍有可能造成安全隐患且缺乏对全部环境的良好适应效果。大家的镜像应当使用USER指令将容器指定为非root用户角色”。(来自Docker镜像创建者指南)
  3. 不要创建大型镜像——体积过大的镜像会加大其发布难度。大家需要确保在镜像中只保留运行应用程序/进程所必需的文件与库。不要安装任何非必要软件包或者在构建过程中运行“更新”(yum update)。
  4. 不要使用单层镜像——为了更为合理地使用分层文件系统,请大家务必为操作系统、安装软件、配置以及应用程序分别创建独立层。这不仅能够简化镜像的创建与管理工作,亦能降低分发难度。
  5. 不要利用运行中的容器创建镜像——换言之,不要使用“docker commit”创建镜像。以这种方式创建的镜像不具备再生产能力且无法实现版本控制性,因此绝对不值得提倡。相反,使用Dockerfile或者任何S2I(即源到镜像)方法能够有效确保整体再生产能力。
  6. 不要在单一容器内运行多个进程——容器系统非常适合运行单一进程(例如http域名、应用程序服务器以及数据库等等),但如果大家在容器内使用多个进程,则可能很难对其分别进行管理、获取日志记录以及更新。
  7. 不要只使用“最新”标签——最新标签类似于Maven用户所熟悉的“SNAPSHOT”。各标签只适合在分层文件系统当中使用。如果大家在镜像构建完成的两个月之后,意外发现自己的应用程序由于顶层版本替换而造成向下兼容性缺失或者build缓存“最新”版本无法运行,那么无疑会造成巨大的麻烦。总体来讲,在向生产环境中部署容器时,必须避免使用最新标签。
  8. 不要在镜像内保存凭证,建议使用环境变量——大家绝对不要以硬编码形式在镜像中保存任何用户名/密码。相反,我们应当利用环境变量从容器之外获取此类信息。在这方面,最完美的示例就是postgres镜像。
K8S中文社区微信公众号
分享到:更多 ()

评论 抢沙发

评论前必须登录!