Docker 绝对新手指南:什么是容器?
Docker 是一个开源软件平台,可以帮助您简化应用程序的创建、管理、运行和分发流程。借助 Docker,您可以将应用程序及其所有依赖项打包到一个容器中。容器使您的应用程序能够轻松、统一地部署。
今天,我们将深入探讨 Docker,并讨论容器、模块、关键术语等等。
我们将涵盖以下内容:
什么是 Docker?
Docker 是一款可在 Linux 和 Windows 系统上运行的开源软件。借助 Docker,您可以将应用程序及其依赖项打包到容器中。Docker 使您能够将应用程序与基础架构分离。
该公司最初是一个基于Linux容器的平台即服务(PaaS)平台。为了帮助创建和管理容器,他们开发了一款名为“Docker”的内部工具,这项技术由此诞生。Docker的第一个版本于2013年发布。
如今,Docker 占据了市场主导地位。许多公司使用 Docker 来简化应用程序的构建、运行和管理流程。它改变了公司开发应用程序的方式。Docker可以虚拟化安装它的计算机操作系统,使其具有极强的可移植性。
Docker 的应用领域包括:
- DevOps
- 软件
- IT服务
- 人员配备和招聘
- 金融
- 卫生保健
- 零售
- ETC。
在讨论其他内容之前,我们先来谈谈 Docker 容器。
什么是容器?
长期以来,企业一直使用容器技术来解决虚拟机的弱点。我们可以将容器视为更轻量级的虚拟机版本。容器和虚拟机之间最重要的区别在于,容器不需要自己的操作系统。主机上的所有容器共享该主机的操作系统,这可以释放大量的系统资源。
现代容器技术最初起源于 Linux 容器(LXC)。包括 Google 在内的众多贡献者帮助将容器相关技术引入了 Linux 内核。如果没有这些贡献,我们今天就不会拥有如此丰富的容器生态系统。
在 Docker 出现之前,容器化并不普及。Docker 容器在应用层创建了一个抽象层。容器会将应用程序及其容器依赖项打包在一起,其中包含运行所需的一切,包括:
- 操作系统
- 应用程序代码
- 运行时环境
- 系统工具
- 系统库
- ETC。
Docker 模块
Docker提供了许多不同的模块和插件。让我们来看看其中一些最受欢迎的模块和插件。
Docker Compose
docker-composeDocker Compose允许您定义和运行多容器应用程序。使用 Compose,您可以通过一个YAML配置文件来配置应用程序的服务,并在 Docker 守护进程或 Docker Swarm 上编排容器。您可以将其视为一种自动化的多容器工作流。Docker Compose 非常适合开发、测试、持续集成 (CI) 工作流和预发布环境。
Docker Machine
docker-machineDocker Machine允许您将容器化应用程序部署到云端。借助 Docker Machine,您可以创建远程虚拟机并管理容器。它是创建部署环境和管理应用程序上运行的微服务的绝佳工具。它可以与 AWS 和 Microsoft Azure 等主流云服务配合使用。
Docker 堆栈
Docker Stack 允许您使用Docker Swarm管理 Docker 容器集群。Docker Stack 已嵌入到 Docker 命令行界面 (CLI) 中。借助 Stack,您可以在单个文件中描述多个服务,从而无需维护用于定义服务的 Bash 脚本。
Docker Swarm
Docker Swarm 允许您管理跨不同主机运行的多个容器。换句话说,它是一个容器编排工具。借助 Swarm,您可以将多个 Docker 主机合并成一个主机。
Docker 与 Kubernetes
Docker 和 Kubernetes 经常被混淆,所以我们花点时间来了解一下这两种技术的区别。这两种技术相辅相成,经常一起使用。
本文已经探讨过 Docker,但这里我们重点介绍一些关键点。
Docker
Docker 是一个容器化平台。我们可以使用 Docker 来构建和运行容器。Docker Engine 是一个运行时环境,它允许你在开发机器上构建和运行容器。运行应用程序可能很复杂,尤其是在多个服务器上部署了大量容器的情况下。确定协调和调度多个容器的最佳方法、弄清楚它们如何相互通信以及如何扩展容器可能非常困难。而 Kubernetes 正是解决这些问题的利器!
Kubernetes
Kubernetes是一款开源的容器化平台编排软件,例如 Docker。它提供了一个 API 来控制容器的操作。Kubernetes 允许您组织虚拟机集群,并将容器调度到这些虚拟机上运行。借助 Kubernetes,您可以运行 Docker 容器并管理容器化应用程序。您的容器会被分组到 Pod 中,您可以根据需要扩展和管理这些 Pod。
等等,Kubernetes 和 Docker Swarm 有什么区别?
正如我们上面讨论的,Docker Swarm 允许您管理跨不同主机的多个容器。
Docker Swarm 和 Kubernetes 的区别在于,Kubernetes 比 Docker Swarm 功能更强大。它运行在集群中,而 Docker 只运行在单个节点上。Kubernetes Pod 分布在不同的节点上,以确保可用性。
Docker 词汇指南
让我们来看一些在使用 Docker 平台时会遇到的常见术语。
-
控制组:控制组允许您在系统上运行的进程之间分配资源。
-
容器镜像:Docker 镜像是指用于在 Docker 容器中执行代码的文件。
-
Docker build:
docker build是用于从 Dockerfile 构建镜像的命令。 -
Docker Engine:Docker Engine 是 Docker 的核心产品,包括其守护进程和命令行界面 (CLI)。它提供了一个用于与 Docker 守护进程交互的 API。
-
Dockerfile:Dockerfile 是一个基于文本的文件,其中包含构建 Docker 镜像的指令。
-
Docker Hub:Docker Hub 是一项服务,可让您在组织内查找和共享容器。
-
Docker 镜像仓库:Docker 镜像仓库允许您存储和分发已命名的 Docker 镜像。镜像仓库以存储库的形式组织,其中包含不同镜像的所有版本。
-
Docker run:run 命令允许您从指定的镜像创建容器,并使用给定的命令启动该容器。
-
命名空间:命名空间是在运行容器时创建的。它们提供了一层隔离,因为容器中的每个元素都在不同的命名空间中运行。
-
Pull:
docker pull是一个允许您下载特定图像或一组图像的命令。 -
仓库(repo):Docker 仓库允许您与他人共享容器镜像。这些镜像以标签的形式存储。
-
标签:Docker 标签就像标签一样,可以分配给任何已完成的构建。
-
联合文件系统 (AUFS):联合文件系统将多个目录分层放置在单个主机上,并将它们呈现为单个目录。
安装 Docker
安装 Docker 的方法和途径有很多种。我们将逐步介绍如何在 Windows 10、Mac 和 Linux 系统上安装 Docker Desktop。
Docker Desktop 是一款用于构建和共享容器化应用程序和微服务的应用程序。根据 Docker 文档,它包含以下功能:
- Docker 引擎
- Docker CLI 客户端
- Docker Compose
- Docker 内容信任
- Kubernetes
- 凭证助手
Windows 10 安装
在 Windows 10 上下载 Docker Desktop 之前,您必须具备以下条件:
- 64 位版本的 Windows 10 专业版、企业版或教育版
- 必须在系统BIOS中启用硬件虚拟化支持。
- 必须在 Windows 中启用Hyper -V和容器功能。
首先在 Google 搜索“安装 Docker Desktop”。搜索结果会将您引导至下载页面,您可以在该页面下载安装程序并按照说明进行操作。
安装完成后,您可能需要从 Windows 开始菜单手动启动桌面。
Mac 安装
与 Windows 10 安装一样,在 Mac 上安装 Docker Desktop 的最简单方法是在 Google 上搜索“安装 Docker Desktop”。然后,您可以按照下载页面上的链接进行操作。
安装完成后,您可能需要从 macOS 启动台手动启动桌面。
注意:在 Mac 上,Docker 引擎并非直接运行在 macOS Darwin 内核上。Docker 守护进程运行在一个轻量级的 Linux 虚拟机中,该虚拟机将守护进程和 API 暴露给您的 Mac 环境。这意味着您可以在 Mac 上打开终端并使用 Docker 命令。
Linux 安装
在 Linux 上安装 Docker 的方法有很多。您可以搜索相关的 Linux Docker 安装指南。本节将介绍其中一种在 Ubuntu Linux 20.04 LTS 上安装 Docker 的方法。我们假设您已经安装了 Linux 系统。我们将分两步安装 Docker:
1. 更新 apt 软件包索引
$ sudo apt-get update
Get:1 http://eu-west-1.ec2.archive.ubuntu.com/ubuntu.com/ubuntu focal InRelease [265
kb]
...
2. 从官方仓库安装 Docker
$ sudo apt-get install docker.io
Reading package lists... Done
Building dependency tree
...
接下来要学什么?
恭喜你迈出了使用 Docker 的第一步!Docker 是一个流行的开源容器化平台,被广泛应用于各个行业,用于简化应用程序的构建、保护和管理流程。鉴于 Docker 的市场需求如此之高,掌握这项技能绝对值得你学习。
获得 Docker 实践经验的一个好方法是构建一个项目并将其添加到您的专业作品集中。在开始之前,您还需要学习许多关于 Docker 的知识,例如:
- 容器生命周期
- Docker 命令
- 创建新容器
- 运行容器
想要开始学习这些概念以及更多内容,请查看 Educative 精心打造的课程《Docker 入门指南》。在这门实践课程中,我们将引导您了解 Docker 的基础知识,帮助您熟练掌握该平台。课程结束时,您将能够构建自己的 Docker 项目,并将其添加到您的作品集中!
学习愉快!