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

容器

第一:容器是不可变的 - 操作系统,库版本,配置,文件夹和应用程序都包装在容器内。 您可以使用通过相同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地址,如果启动和停止容器,它的地址可能会改变。 如果您的应用程序或微服务需要与另一个容器通信,请使用环境变量将正确的主机名和端口从一个容器传递到另一个容器。

关注中国IDC圈官方微信:idc-quan 我们将定期推送IDC产业最新资讯

查看心情排 行你看到此篇文章的感受是:


  • 支持

  • 高兴

  • 震惊

  • 愤怒

  • 无聊

  • 无奈

  • 谎言

  • 枪稿

  • 不解

  • 标题党
2019-06-18 12:06:42
云技术 Docker 将会推出 Docker Desktop for WSL 2
微软最新推出的 WSL 2 在架构方面发生了重大的变化:它们提供了一个在轻量级 VM 中运行的真正 Linux 内核。 <详情>
2019-04-08 16:31:45
云技术 Veritas NetBackup获Docker容器新认证
近日,企业级数据保护厂商Veritas Technologies宣布,NetBackup 8.1.2已获得基于 Docker容器的工作负载保护的认证。未来,Veritas的客户将在多云、虚拟和物理环境中保护其 <详情>
2019-04-08 12:25:58
云技术 你在 Docker 中跑 MySQL?恭喜你,好下岗了!
目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也带来了一个热点问题被大家所争论不以:数据库 MySQL 是否需要容器化? <详情>
2018-07-11 12:35:44
云技术 专为公共云的Minimal Ubuntu发布:体积减少50% 启动速度快40%
专为公共云和Docker Hub优化,Canonical今天正式推出全新的Minimal Ubuntu系统。 <详情>
2018-06-28 15:46:27
云技术 容器有很多优势,但它们是否安全?
与虚拟机不同,容器并不是100%与底层主机操作系统(通常是Linux或Window Server)或服务器上的驱动程序或其他应用程序隔离的。 <详情>