本文源自并发编程网的翻译邀请,翻译的是 Jakob Jenkov 的 《Docker 教程》 中的第一篇,本文大概介绍了 Docker 是什么和有什么用。可能在工作中,会有专业运维同学管理服务器镜像或其他内容,但是如果不了解这些概念,很多时候我们不会全面了解到系统的全貌。
Docker 是一种将应用程序和服务器配置打包成 Docker 镜像的方法,使用了一种称为 Dockerfile 的简单打包规范。Docker 镜像可以启动多个多个实例,这些运行的实例被称为 Docker 容器。这个系列的内容主要包括讲解什么是 Docker 镜像、什么是容器、什么是 Dockerfile,以及如何创建、运行和发布等。
Docker 的优势
使用 Dockerfile 打包应用和服务器配置最大的好处是:
- 不会忘记服务器是如何配置的,这些配置信息都记录在 Dockerfile 中。
- 很容易在一个全新啊的 Docker 主机上运行应用程序,只需要将应用程序的 Docker 镜像部署到这台 Docker 主机上,然后启动它即可。
- 可以使用 Kubernetes 和 Swarm 轻松管理集群中的 Docker 容器。
- 目前许多云服务器平台可以很轻松的部署 Docker 容器,Docker 已经成为让云更加独立的部署方案。
- Docker 容器可以很简单的实现在客户自己的服务器上按照你的应用程序。
什么是 Docker 容器
Linux 操作系统有几个特性:运行在操作系统上运行容器化的应用程序,这些容器化的特性,运行将文件系统和网络在各个容器化应用程序之间彼此分离。换句话说,一个容器化应用程序,不能访问另一个容器化应用程序的文件系统或网络,除非增加特殊配置,允许这种操作。Docker 使用 Linux 的容器化特性,并通过一组易于使用的工具公开这些特性。
Docker 容器 vs. 虚拟机
Docker 容器在本质上类似于虚拟机,两者的不同之处在于,虚拟机在总栈上有一个额外的操作系统。也就是说,虚拟机有完整的操作系统,然后这个虚拟机运行在一个有操作系统的主机上。
Docker 容器与虚拟机的实现不同,它没有自己单独的操作系统,直接运行在所在主机的操作系统中。所以,Docker 容器足够小,因为它不包含虚拟机操作系统。Docker 容器运行的也很好,因为它不需要虚拟机的虚拟化。
Dockerfile
如前所述,我们可以通过一个按规则定义的 Dockerfile 文件,指定要包含在 Docker 容器中的内容。Dockerfile 文件包含了一组有 Docker 命令行工具执行的 Docker 指令,按照 Dockerfile 执行的结果是 Docker 镜像。我们可以从 Dockerfile 教程 中得到更详细的解释。【译者注:后续翻译完成后,将替换此处链接。】
Docker 镜像
Docker 命令行工具按照 Dockerfile 中定义的结构执行指令时,会生产一个可移植、可运行的 Docker 镜像。这个 Docker 镜像中包含了所有 Docker 容器需要的文件和指令,同一个 Docker 镜像可以启动多个 Docker 容器。
Docker 仓库
Docker 镜像可以存储在 Docker 仓库中,一个可以将 Docker 镜像上传、下载的存储仓库。Docker 仓库可以是私有的,只能你或者你的组织或者你指定的人管理其中的镜像,也可以是公有的,任何人都可以管理其中的镜像,或者是从中下载 Docker 镜像。
一个公有的 Docker 仓库,是运行潜在用户下载、安装和运行软件的很好的方式,只需要将应用程序打包为 Docker 镜像,上传到公有的 Docker 仓库中,你的用户就可以访问并使用它。
Docker 公司已将 Docker 仓库作为一项托管服务,提供了私有和公有两种服务。一些云服务商,比如 AWS、AZure 和 Google,也提供了 Docker 仓库服务器,可以上传自己的 Docker 镜像。很容易的就能在云基础设施上的虚拟机或 Kubernetes 中使用这些镜像。
Docker 命令行工具
当在操作系统中安装 Docker 的时候,会同时安装 Docker 命令行工具。Docker 命令行工具可以通过 Dockerfile 构建 Docker 镜像,可以将 Docker 镜像上传到 Docker 仓库中,可以从 Docker 仓库中下载 Docker 镜像,可以操作 Docker 镜像启动或停止 Docker 容器。
Docker Compose
Docker Compose 提供一种功能,可以将多个 Docker 容器链接成一个组合中,这个组合中的所有容器,可以一次性全部部署或停止。比如,一个 Docker 容器中运行应用,一个 Docker 容器中运行数据库,应用依赖于数据库,同时启动或停止,可以实现应用依赖的数据库没有正常运行。
推荐阅读
你好,我是看山,公众号:看山的小屋,10 年老猿,开源贡献者。游于码界,戏享人生。
原文链接:Docker Tutorial
翻译:https://www.howardliu.cn
译文链接:Docker 教程(一):Docker 是什么
CSDN 主页:http://blog.csdn.net/liuxinghao
CSDN 博文:Docker 教程(一):Docker 是什么