7.《Docker 从入门到实践》其他技巧与补充

1 容器与云计算

Docker 目前已经得到了众多公有云平台的支持,并成为除虚拟机之外的核心云业务

与容器相关的云计算主要分为两种类型:

  • 传统的 IaaS 服务商提供对容器相关的服务,包括镜像下载、容器托管等
  • 直接基于容器技术对外提供容器云服务,即 Container as a Service(CaaS)

平台举例:腾讯云阿里云亚马逊云(AWS)

Docker 技术的出现自身就极大推动了云计算行业的发展:

  • 更快速的持续交付和部署能力;更丰富的应用开发和部署场景
  • 利用内核级虚拟化,对公有云中服务器资源进行更加高效地利用
  • 利用公有云和 Docker 的特性更加方便的迁移和扩展应用

2 镜像与操作系统

<code>BusyBox</code> 是一个集成了一百多个最常用 Linux 命令和工具(如 catechogrepmounttelnet 等)的精简工具箱,它只需要几 MB 的大小,很方便进行各种快速验证,被誉为“Linux 系统的瑞士军刀”

<code>Alpine</code> 操作系统是一个面向安全的轻型 Linux 发行版。Alpine 采用了 musl libcbusybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐

  • Alpine 由非商业组织维护的,支持广泛场景的 Linux发行版
  • Alpine 还提供了自己的包管理工具 apk,可以直接查询和安装各种软件
  • Alpine 的镜像容量非常小,仅仅只有 5 MB 左右(对比 Ubuntu 系列镜像接近 200 MB
  • 目前 Docker 官方已开始推荐使用 Alpine 替代之前的 Ubuntu 做为基础镜像环境

<code>Debian</code><code>Ubuntu</code> 都是目前较为流行的Debian 系的服务器操作系统,十分适合研发场景

<code>CentOS</code><code>Fedora</code> 都是基于 Redhat 的常见 Linux 分支。CentOS 是目前企业级服务器的常用操作系统;Fedora 则主要面向个人桌面用户

官方镜像的特点:

  • 体积小,只包含基本的组件;精简的系统有利于安全、稳定和高效的运行,也适合个性化定制
  • 出于安全考虑,官方镜像都没有安装 SSH 服务,无法通过用户名和密码直接登录到容器中

除了官方的镜像外,在 Docker Hub 上还有许多第三方组织或个人上传的 Docker 镜像

3 持续集成与部署

持续集成(Continuous integration,CI) 是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

持续部署(continuous deployment,CD) 是通过自动化的构建、测试和部署循环来快速交付高质量的产品

GitHub Actions 是 GitHub 推出的一款 CI/CD 工具,更多细节可查阅官方文档

<code>Drone</code>是基于 DockerCI/CD 工具

  • drone 的所有编译、测试的流程都在容器中进行
  • 开发者只需在项目中包含 .drone.yml 文件,将代码推送到 git 仓库
  • Drone 就能够自动化的进行编译、测试、发布
  • 更多资料:Drone 文档Drone 示例

4 其他补充资料

热门镜像介绍

  • Nginx 是开源的高效的 Web 服务器实现,支持 HTTP/HTTPS/SMTP/POP3/IMAP 等协议
  • PHP(Hypertext Preprocessor 超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML 中,尤其适合 web 开发
  • Node.js 是基于 JavaScript 的可扩展服务端和网络软件开发平台
  • MySQL 是开源的关系数据库实现
  • WordPress 是开源的 Blog 和内容管理系统框架,它基于 PHP 和 MySQL
  • MongoDB 是开源的 NoSQL 数据库实现
  • Redis 是开源的内存 Key-Value 数据库实现
  • MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据

Dockerfile 最佳实践(推荐)

VS Code 将 Docker 容器作为远程开发环境

Docker 常见问题总结

如何调试 Docker

官方网站

  • Docker 官方主页:https://www.docker.com
  • Docker 官方博客:https://www.docker.com/blog/
  • Docker 官方文档:https://docs.docker.com/
  • Docker Hub:https://hub.docker.com
  • Docker 的源代码仓库:https://github.com/moby/moby
  • Docker 路线图 https://github.com/docker/roadmap/projects
  • Docker 发布版本历史:https://docs.docker.com/release-notes/
  • Docker 常见问题:https://docs.docker.com/engine/faq/
  • Docker 远端应用 API:https://docs.docker.com/develop/sdk/

技术交流

  • Docker 邮件列表: https://groups.google.com/forum/#!forum/docker-user
  • Docker 的 IRC 频道:https://chat.freenode.net#docker
  • Docker 的 Twitter 主页:https://twitter.com/docker
  • Docker 的 StackOverflow 问答主页:https://stackoverflow.com/search?q=docker

往年同期文章