ad

从 Docker 的新手村动身?那末你需要这11条守则

匿名投稿 227 2024-02-04

很多人终究还是决定使用 Docker 解决问题。 Docker 的优点很多,比如:

  一体化——将操作系统、库版本、配置文件、利用程序等全部打包装在容器里。从而保证 QA 所测试的镜像 (image) 会携携同样的行动到达生产环境。

  轻量——内存占用极小,只为主要进程分配内存。

从 Docker 的新手村动身?那末你需要这11条守则

  快读——一键启动,就像启动常见的 linux 进程一样快。

  虽然如此,众多用户依然只是把容器当作常见的虚拟机,而忘记了容器的一个重要特质:

  用后即弃

  正由于这一特点,一些用户需要改变他们对容器的观念,为了更好的使用与发挥 Docker 容器的价值,有一些事情是绝对不应当做的:

  1.不要在容器(container)中存储数据 容器可能会被中断、被替换或遭到破坏。在容器中运行的 1.0 版利用程序很容易就会被 1.1 版取代,而不会对数据造成作用或致使数据丢失。因此,这种情况下,如果需要存储数据,请存储在卷 (volume) 中。在这一情况下,还应注意两个容器是不是会在同一个卷上写入数据,这将致使破坏。请确保利用程序适用于写入同享的数据存储。

  2. 不要分两部份传送利用程序 有些人把容器当作虚拟机,所以他们大多会认为,应当将利用程序部署到现有正在运行的容器中。在需要不断部署和调试的开发阶段,可能确切如此;但对 QA 和生产的延续交付 (CD) 渠道,利用程序应当是镜像的一部份。切记:容器转眼即逝。

  3. 不要创建大尺寸镜像 大尺寸的镜像难以分配。请确保仅使用必须文件和库来运行利用程序。不要安装没必要要的数据包,也不要运行“更新”(yum update),这些操作会把大量文件下载到新的镜像层。

  4. 不要使用单层镜像 为了行之有效的利用多层文件系统,请始终为操作系统创建属于自己的基本镜像层,然后为用户名定义内涵创建一个层,为运行时安装创建一个层,为配置创建一个层,最后再为利用程序创建一个层。这样,重新创建、管理和分配镜像就会容易些。

  5. 不要从正在运行的容器中创建镜像 换句话说,不要使用"docker commit"命令来创建镜像。这一镜像创建方法不可复制,因此应完全避免使用。请始终使用 Dockerfile 或其他任何可完全复制的 S21(从源代码到镜像)方法,如此一来,如果存储在源代码控制存储库 (GIT) 中,就能够跟踪 Dockerfile 的变更情况。

  6. 不要只使用“最近版”标签 最近版标签就像 Maven 用户的“快照”(SNAPSHOT) 一样。容用具有多层文件系统这一基本特点,所以我们鼓励使用标签。相信谁也不愿意在构造了几个月的镜像后,突然发现利用程序由于父层(即 Dockerfile 中的 FROM)被新版本取代而没法运行(新版本没法向后兼容或从构造缓存中检索的“最近“版有误)这样的意外吧?在生产进程中部署容器时也应避免使用”最近版“标签,这是由于没法跟踪当前运行的镜像版本。

  7. 不要在单个容器中运行一个以上进程 容器只运行一个进程(HTTP 守护进程、利用程序服务器、数据库)时效果最好,但如果运行一个以上进程,在管理和检索日志和单独更新进程时就会遇到很多麻烦。

  8. 不要在镜像中存储证书及使用环境变量。 不要在镜像中对任何用户名/密码进行硬编码操作。请使用环境变量从容器外部检索信息。Postgres 镜像就是这一原理的极佳诠释。

  9. 不要以 root 权限运行进程 “默许情况下,Docker 容器以 root 用户权限运行。(……)随着 Docker 技术日益成熟,能够使用的安全默许选项愈来愈多。至今为止,要求 root 对其他用户来讲比较危险,另外,不是所有环境都能够使用 root。镜像应使用 USER 指令来为容器的运行指定非 root 用户。”(摘自《Docker 镜像作者指南》(Guidance for Docker Image Authors))

  10. 不要依赖 IP 地址 每一个容器都有自己的内部 IP 地址,如果启动然后停止容器,内部 IP 地址可能会产生变化。如果你的利用程序或微服务需要和另外一个容器进行通讯,请使用环境变量在容器之间传递相应的主机名和端口。

  11. 监控容器 Docker 监控已愈来愈遭到开发者们的重视,实时监控 Docker 的方法,这里推荐 Cloudinsight。 不同于一些需要自写脚本的监控手段,Cloudinsight 作为一家免费的 SaaS 服务,能够一键监控 Docker,且具有很棒的可视化界面。除此以外,Cloudinsight 还支持多种操作系统、数据库等的监控,能够一体化展现所有被监控的系统基础组件的性能数据。


免责声明:
本网址(www.yingxiongyun.com)发布的材料主要源于独立创作和网友匿名投稿。此处提供的所有信息仅供参考之用。我们致力于提供准确且可信的信息,但不对材料的完整性或真实性作出任何保证。用户应自行验证相关信息的正确性,并对其决策承担全部责任。对于由于信息的错误、不准确或遗漏所造成的任何损失,本网址不承担任何法律责任。

本网站所展示的所有内容,如文字、图像、标志、音频、视频、软件和程序等的版权均属于原创作者。

如果任何组织或个人认为网站内容可能侵犯其知识产权,或包含不准确之处,请即刻联系我们进行相应处理。

上一篇:混合云面对的现实
下一篇:磁带和云计算:现代存储的意外组合
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×