专栏首页云计算D1net使用Docker时应该避免这10 件事…

使用Docker时应该避免这10 件事…

容器可以解决很多问题,并且具有诸多优势,当你投身其中时便会发现其奥妙所在。

第一:容器是不可变的 - 操作系统,库版本,配置,文件夹和应用程序都包装在容器内。 您可以使用通过相同QA测试的镜像,使产品具有相同的表现。

第二: 容器是轻量级的 - 容器的内存占用很小。没有成百上千的MB,容器只会分配主进程的内存。

第三: 容器是快速的 - 你可以像一个典型的linux进程一样快速启动一个容器。只需要几秒钟,您就可以启动一个新的容器。

然而,许多用户仍然像对待典型的虚拟机那样对待容器。他们似乎都忘记了容器的重要特性:容器是一次性的。

容器的准则:

“容器是临时的”。

这个特性迫使用户改变处理和管理容器的心态;我将会向你说明在容器中不应该做的那些事,以确保容器可以发挥出最佳效果:

1) 不要将数据存储在容器中 - 容器可以被停止,销毁或者替换。 在容器中运行的应用程序版本1.0很容易被1.1版本替换而不会产生任何影响或数据丢失。 因此,如果您需要存储数据,请在卷中进行。 当然在这种情况下,您还应该注意,如果两个容器在相同的卷上写入数据,有可能会导致损坏。 请确保您的应用程序被设计为写入共享数据存储。

2)不要将应用程序分成两个部分 -有些人认为容器像虚拟机,大多数人往往认为他们应该将应用程序部署到现有的运行容器中。 在开发阶段这样是可以的,您需要连续部署和调试;但对于连续交付(CD)管道到QA和产品,您的应用程序应该是映像的一部

3)不要创建大镜像 - 大图像将更难分发。 确保您仅具有运行应用程序/进程所需的文件和库。 不要安装不必要的包或运行“更新” (yum更新) ,下载许多文件到一个新的图像层。

4)不要使用单层镜像 - 要有效地使用分层文件系统,始终为您的操作系统创建您自己的基本镜像层, 用户名定义的为一个图层, 运行时安装的为一个图层,配置的为一个图层,最后为您的应用程序建立一个层。 这样将更容易重新创建,管理和分发您的图像。

5)不要从正在运行的容器中创建镜像 – 换句话说,不要使用“docker commit”创建镜像。 这种创建图像的方法不可重现,应该完全避免。 始终使用Dockerfile或任何其他完全可重复的S2I(源图像)的方法,如果将它存储在源代码控制存储库(git)中,您可以跟踪对Dockerfile的更改。

6)不要只使用“最新”标签 - 最新标签就像“Maven用户快照”。 基于容器分层文件系统的性质,标签实际上是被鼓励使用的,你应该不会希望看到当你几个月后创建镜像时的不兼容,或从创建缓存的检索中检索到了一个错误的“最新”版本。当您不能跟踪正在运行的版本时,在生产环境部署容器时应该避免“最新”标签的出现。

7)不要在一个容器中运行多个进程 - 容器可以完美的运行单个进程(http守护进程,应用程序服务器,数据库),但如果你有一个以上的进程,你可能会在管理上,检索日志,以及单独地更新的过程中遇到更多的麻烦。

8)不要在镜像中存储凭证。 使用环境变量 – 不要对镜像中的任何用户名/密码进行硬编码。 使用环境变量从容器外部检索此信息。 这个原则的一个很好的例子是Postgres图像 。

9)不要以root用户身份运行进程 - “默认情况下,docker容器会以root身份运行。随着Docker的成熟,更安全的默认选项可能会变得可用。 现在,要求root对其他人来说是危险的,并且可能在所有环境中都不可用。 您的镜像应该使用USER指令来为容器指定非root用户

10)不要依赖IP地址 - 每个容器都有自己的内部IP地址,如果启动和停止容器,它的地址可能会改变。 如果您的应用程序或微服务需要与另一个容器通信,请使用环境变量将正确的主机名和端口从一个容器传递到另一个容器。

本文分享自微信公众号 - 云计算D1net(D1Net02),作者:朱丽娜

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IT人士需要了解的云中容器的术语

    如今如果没有提及容器,就很难谈论云计算。无论技术新手还是经验丰富的专家,都需要了解与云中容器相关的这些关键术语。 随着云计算中容器的普及,更多的组织选择不考虑...

    静一
  • 容器 VS. 虚拟机:云中应该使用哪一种?

    在开足马力使用容器之前,了解容器与虚拟机在私有云、公共云以及混合云部署之间的区别是至关重要的。 虽然目前大多数的云部署都是基于虚拟机的,但是容器技术为云用户带来...

    静一
  • 想要使用容器技术 这5类遗留工具就应该被淘汰

    充分利用容器并不只是安装Dockers和激活容器应用程序那么简单。你需要改进的同样还有监控方法、安全性能等。 这么做的理由是,容器并不只是对你过去工作中使用到的...

    静一
  • 容器快速入门完全指南

    容器,以及Docker和Kubernetes之类的容器技术已经日益成为许多开发人员工具包中常见的工具。容器化的核心目标是提供一种更好的方式,以可预测和便于管理的...

    CNCF
  • 谈DevOps中的容器安全

    【编者按】对比虚拟机,Docker在体量等方面拥有显著的优势。然而,当DevOps享受Docker带来扩展性、资源利用率和弹性提升的同时,其所面临的安全隐患同样...

    CSDN技术头条
  • Docker入门实操

    浅色边框标题 docker简介 Linux容器作为一类操作系统层面的虚拟化技术成果,旨在立足于单一Linux主机交付多套隔离性Linux环境。 与虚拟机不同,容...

    企鹅号小编
  • 快速学习Docker-容器基本操作

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    cwl_java
  • Docker入门

    我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解

    用户6070864
  • 从入门到跑路之Kubernetes(二)

    “ 上次的问题主要总结了Namespace和Cgroups,在来讲讲另外两个容器技术rootfs和Volume”

    周萝卜
  • Docker入门

    上一节中,我们了解到了Docker 的一些基本知识点,它的一些核心概念,Docker的使用安装等。此篇文章我们对 Docker 进行入门讲解

    Criss@陈磊

扫码关注云+社区

领取腾讯云代金券