Docker 教程
作者: Jakob Jenkov 原文链接
Docker是一种使用名为Dockerfile
的打包规范将应用程序和服务器配置打包为 Docker 镜像的简单方法。 Docker 镜像可以在任意多个实例中启动 。 Docker 镜像的每个运行实例都称为 Docker容器(Docker Container)。该Docker教程介绍了Docker镜像,容器和 Dockerfile 是什么,如何创建,运行和发布它们以及更多的内容。
Docker 的优点
使用 Dockerfile 打包应用程序及其服务器配置的最大好处是:
- 你不会忘记服务器是怎么配置的,因为 Dockerfile 都帮你记录了下来
- 您可以轻松地在新的 Docker 主机上运行您的应用程序。 只需将应用程序的Docker 镜像部署到该Docker主机,然后启动它。 一切都是自动化的
- 像 Kubernetes 和 Docker Swarm 这样的集群工具可以方便的在集群中管理 Docker 容器
- 许多云平台都可以轻松部署 Docker 容器。 因此,Docker 是一种变得更加独立于云的简单方法
- Docker 容器是一种可以帮你的客户将自己的应用程序安装在自己的服务器上的简便方法
什么是 Docker 容器(Docker Container)?
Linux 系统具有一些容器化的功能,能够允许容器化的应用程序运行在操作系统之上。 这些功能够为容器化的应用提供相互隔离的文件系统和网络。 换句话说,除非明确允许,否则一个容器化应用程序无法访问另一个容器化应用程序的文件系统或网络。 Docker 使用这些 Linux 容器化功能,并通过一组简单易用的工具将其对外暴露出来
Docker 容器 vs. 虚拟机
Docker 容器本质上类似于虚拟机。 但是,虚拟机在总堆栈中有一个额外的OS,虚拟机具有VM OS,然后该 VM 在计算机的 OS 上运行。
从另一方面来说,一个 Docker 容器并没有自己的内部 OS,容器直接运行在主机的 Linux OS上面。所以,一个Docker 容器的可以占用比较小的空间,因为它并不包含一整个 VM OS,同时Docker 容器的性能也更好,因为不需要虚拟化虚拟机
Dockerfile
如前所述,可以通过一个特殊的文件来指定要包含在Docker 容器中的内容,按照惯例,该文件称为Dockerfile。 Dockerfile 包含一组Docker 指令,这些指令由Docker命令行工具执行。 结果是一个Docker 镜像(Docker Image)。 关于 Dockerfile 的内容,请参见下篇教程。
Docker 镜像 (Docker Image)
当 Docker 命令行工具执行 Dockerfile 中的指令时,命令行工具会生成 Docker 镜像。可以把Docker 镜像看成是 Docker 容器的一个可移植,可执行的模板。 Docker 镜像包含所有需要的文件和运行相应 Docker 容器的指令,可以从同一Docker 镜像启动多个Docker容器
Docker 仓库 (Docker Registry)
Docker 镜像可以存储在 Docker 仓库中。 Docker Registry 是一个Docker 镜像存储库,Docker 镜像可以在其中上传和下载。 Docker Registry 可以是私有的(仅适用于您,您的组织或您授予访问权限的其他人),也可以是公共的(意味着任何人都可以访问它),或者至少可以从其中下载Docker 镜像。
公共的 Docker 仓库是允许你的软件潜在用户下载,安装和运行软件的好方法。 只需将你的应用程序打包为Docker 镜像,然后将其上传到公共Docker Registry,你的用户就可以访问它。
Docker 公司已将 Docker Registries 作为服务托管。 他们有公共和私有Docker 仓库可用。 诸如AWS,Azure 和 Google 之类的一些云服务提供商也提供了Docker 仓库,您也可以使用它们来上传Docker 镜像,以便轻松部署到其云基础架构上的虚拟机或 Kubernetes 集群上。
Docker 命令行工具
在计算机上安装 Docker 时,Docker 会附带 Docker 命令行工具。 Docker 命令行工具可以从Dockerfile 构建 Docker 镜像,将 Docker 镜像上传到远程 Docker 仓库,从 远程Docker 仓库下载Docker 镜像,以及从Docker 镜像启动和停止 Docker容器。
Docker Compose
Docker Compose 功能可以将多个Docker 容器“链接”成一个“组合”,可以一次安装/部署并全部启动。 例如,一个应用程序位于一个Docker容器中,而数据库位于另一个Docker容器中,两个Docker 容器对于应用程序的运行都是必需的, 通过 Docker Compose 将他们组合在一起运行。
ocker 容器对于应用程序的运行都是必需的, 通过 Docker Compose 将他们组合在一起运行。
下篇教程: Dockerfile (待续)