什么是 Docker?

Docker 是一个能够让开发者将其构建的应用程序以及依赖包,统一打包放到一个可移植镜像中的开源应用容器引擎。借助 Docker,开发者可以在各大流行的平台上轻松实现发布和使用其所开发的应用程序,同时也可实现虚拟化。

Docker 容器的工作原理

Docker 容器是一种操作系统级虚拟化技术,允许应用程序在隔离、轻量级的环境中运行。Docker 容器的工作原理如下:

Docker 容器利用了 Linux 内核的一些资源隔离特性,如 cgroups 和内核命名空间,以及联合文件系统(如 OverlayFS)。这些特性使得容器可以与宿主机操作系统内核共享资源,但又相互隔离,从而实现资源利用率的最大化。

与传统虚拟机相比,Docker 容器由于共享宿主机操作系统内核,因此占用更少的资源。一台服务器或虚拟机可以同时运行多个 Docker 容器。研究表明,典型的 Docker 用例是每台主机运行 8 个容器,有些组织甚至在每台主机上运行 18 个或更多容器。

Docker 容器将应用程序及其依赖项打包到一个标准化、封装的环境,可以跨不同的计算平台(如 Linux、Windows 或 macOS)一致运行。Docker 镜像作为只读模板,用于构建容器,而 Docker 仓库则提供了存储和分发镜像的存储库。

Docker 容器通过 Docker API 和 CLI 进行管理,用户可以创建、启动、停止和与容器交互。这种标准化的管理方式,确保了容器在不同环境中的一致性和可移植性。

Docker 镜像

Docker 镜像是 Docker 容器运行的基础,它由多层文件系统组成,能够为容器提供所需的程序、库、资源、配置等文件,以及匿名卷、环境变量、用户等配置参数。以下是关于的一些关键点:

分层存储架构

Docker 镜像采用分层存储的架构设计。由于镜像包含完整的操作系统 root 文件系统,导致其体积庞大。分层存储可以有效地共享资源、节省磁盘空间。

分层存储架构

只读文件系统

Docker 镜像本身是只读的文件系统。启动容器时,Docker 会在镜像的只读文件系统之上添加一个读写层,容器运行时的数据都存储在这个读写层。

只读文件系统

不包含动态数据

Docker 镜像不包含任何动态数据,其内容在构建之后也不会发生改变。所有的动态数据都存储在容器的读写层中。

不包含动态数据

容器运行基础

Docker 镜像是启动 Docker 容器的基础。每个容器都是从一个镜像启动的。镜像提供了容器运行所需的代码、库、资源和配置等文件。

容器运行基础

分层缓存

Docker 镜像的分层存储架构还带来了分层缓存的优势。在构建镜像时,如果某一层没有发生变化,Docker 就会直接使用缓存中的镜像层,从而加快构建速度。

总之,Docker 镜像是一个静态的只读文件系统,它包含了容器运行所需的所有内容。Docker 容器则是在镜像的基础上启动的,并在镜像之上添加了一个读写层用于存储动态数据。Docker 镜像的分层存储架构使其能够高效地共享资源和缓存,从而优化了存储和构建效率。

分层缓存

Docker 安装

Docker 是一种容器技术,基于镜像能够秒级启动具备完整运行环境的容器,且容器之间互相隔离。Docker 安装的步骤如下:

1

选择要安装的平台

Docker 支持在多种平台上安装,如 Linux、Windows、macOS 等。对于 CentOS 系统,内核版本需要高于 3.10。

2

选择要安装的操作系统版本

Docker 支持在不同的操作系统版本上安装,如 CentOS 7、Ubuntu 18.04 等。选择与您系统匹配的版本。

3

卸载已安装过的 Docker

如果之前安装过 Docker,需要先将其卸载。登录 CentOS 系统,确保 yum 包为最新版本。

4

建立仓库

为 Docker 建立仓库,以便后续安装和更新。可以使用官方提供的仓库地址。

5

安装 Docker 引擎

使用 yum 命令从仓库安装 Docker 引擎。

6

启动 Docker

安装完成后,需要启动 Docker 服务。

7

测试正常

运行一个简单的 Docker 容器,验证 Docker 是否安装成功并能正常运行。

通过以上步骤,您就可以在 CentOS 系统上成功安装 Docker。Docker 作为一种轻量级的容器技术,可以极大地简化应用程序的部署和管理,提高开发效率。它支持在不同的操作系统和硬件环境中运行,并且能够隔离应用程序及其依赖项,从而避免环境冲突。

注册开启免费试用 热门云产品任你选

免费体验 40+ 款企业级云服务,一次性试用多款云产品,迅速找到适配您业务的解决方案

如何构建 Docker 镜像

要构建 Docker 镜像,首先需要创建一个 Dockerfile,它是一个只读模板,用于构建容器。Dockerfile 包含了构建 Docker 镜像的指令,例如指定基础镜像、运行命令安装依赖项,以及定义运行应用程序的命令。

创建好 Dockerfile 后,您可以使用 Docker CLI 来构建镜像。`docker build` 命令会读取 Dockerfile,执行其中的指令,并创建一个新的 Docker 镜像。生成的镜像可用于创建和运行 Docker 容器。

Docker 镜像存储在镜像仓库(registry),这是 Docker 镜像的存储库。主要的公共镜像仓库是 Docker Hub,它是 Docker 默认查找镜像的仓库。您也可以创建私有镜像仓库来存储自己的自定义镜像。

Docker 镜像是通过分层构建的,从一个基础镜像开始(通常是操作系统的最小版本),然后根据容器配置文件中的指令添加额外的层。Docker 镜像的一个核心特性是不可变性:一旦创建,它们就不会改变。

如何管理和编排 Docker 容器

容器编排概述

Docker 容器编排是指自动化管理和网络连接容器以实现大规模应用程序部署的过程。容器编排工具(如 Kubernetes)可管理容器的整个生命周期 从供应和调度到部署和删除。容器编排的关键优势包括内置弹性、增强性能和优化资源利用率。

容器编排概述

创建和调度

编排工具读取声明式配置文件以获取容器镜像,根据要求供应容器,并确定容器之间的网络连接。然后跨集群节点调度和部署多容器应用程序。

创建和调度

管理和监控

一旦容器运行,编排工具就会管理整个系统的运行状况,确保其保持在所需状态。这包括自动重启离线容器、根据需求扩展容器以及优化整个集群的资源使用。编排工具在主节点上提供 GUI 或命令行界面,允许管理员管理和监控容器环境。

管理和监控

Docker组件

Docker 提供了一套全面的工具和组件来管理和编排容器,包括镜像、服务、注册表、守护进程和客户端。Docker 镜像是用于构建容器和存储和运输应用程序的只读模板。Docker 注册表是 Docker 镜像的存储库,客户端可以从中下载或上传构建的镜像。Docker 守护进程(dockerd)是一个持久进程,用于管理 Docker 容器和处理容器对象。Docker 客户端程序(docker)为用户提供了与 Docker 守护进程交互的命令行界面。

Docker组件

Docker 容器与虚拟机的区别

Docker 容器比虚拟机更加轻量级,占用更少的系统资源。容器直接运行在宿主机的内核上,多个容器共享同一个操作系统内核,而虚拟机需要为每个虚拟机实例运行完整的操作系统,包括应用程序、必要的二进制文件和库资源,因此占用更多的磁盘空间、内存和 CPU 资源。

虚拟机通过虚拟化技术实现了硬件级别的隔离,因此具有更好的安全性和隔离性。而 Docker 容器则依赖于 Linux 内核的命名空间和控制组(cgroups)等技术实现进程级别的隔离,隔离性和安全性相对较弱。

由于 Docker 容器不需要启动完整的操作系统,因此启动速度比虚拟机快得多。相比之下,虚拟机需要先启动完整的操作系统,然后再启动应用程序,启动时间较长。

Docker 容器可以在任何支持 Docker 的环境中运行,确保了应用程序在不同环境下的一致性和可移植性。而虚拟机则需要考虑硬件兼容性等问题,可移植性和一致性相对较差。

Docker 容器可以通过 Docker Swarm 或 Kubernetes 等容器编排工具实现快速扩展和管理。而虚拟机的扩展则需要手动配置和管理,相对较为繁琐。

亚马逊云科技容器产品优势

完全托管

Amazon Elastic Container Registry (ECR) 是一种完全托管的 Docker 容器注册表服务,旨在帮助开发人员轻松存储、管理和部署 Docker 容器镜像。使用 Amazon ECR,您无需自行操作和维护容器存储库的基础设施,也不必为扩展底层基础设施而担心。Amazon ECR 将您的 Docker 镜像存储在高度可用且可扩展的架构中,确保您可以可靠地为应用程序部署容器。借助 Amazon ECR,您可以专注于构建和部署容器化应用程序,而无需管理底层容器注册表基础设施。

完全托管

安全且易于使用

Amazon Elastic Container Service (Amazon ECS) 是一项完全托管的容器编排服务,旨在帮助您轻松部署、管理和扩展容器化的应用程序。Amazon ECS 与亚马逊云科技平台的其他服务深度集成,为在云中和使用 Amazon ECS Anywhere 在客户管理的基础设施上运行容器工作负载提供安全且易于使用的解决方案。借助 Amazon ECS,您可以专注于构建和运行容器化应用程序,而无需管理底层容器编排基础设施。

安全且易于使用

为基于容器的应用程序提供一致的工具和 API 体验

Amazon ECS Anywhere 是 Amazon ECS 的一项新功能,使您能够在客户管理的基础设施上轻松运行和管理容器工作负载,包括在您自己的本地数据中心、虚拟机和裸机服务器中。ECS Anywhere 基于 Amazon ECS 的简单易用性构建,为基于容器的应用程序提供一致的工具和 API 体验。无论您在云中还是在本地基础设施上运行容器工作负载,您都可以使用相同的工具和 API 来管理和编排容器化应用程序。

为基于容器的应用程序提供一致的工具和 API 体验

无需管理服务器或集群

Amazon Fargate 是适用于 Amazon ECS 的无服务器计算引擎,借助 Amazon Fargate,您不再需要预置、配置和扩展虚拟机的集群即可运行容器。使用 Amazon Fargate,您无需考虑服务器或集群或与之进行交互,可以专注于设计和构建应用程序而不必管理运行它们的基础设施。Amazon Fargate 会自动为您的容器工作负载分配正确数量的计算资源,并根据需求自动扩展和缩减资源。

无需管理服务器或集群

高度可用

Amazon Elastic Kubernetes Service (Amazon EKS) 是一项完全托管的 Kubernetes 服务,跨多个亚马逊云科技可用区为您运行 Kubernetes 管理基础设施,从而消除单点故障。Amazon EKS 经认证可与 Kubernetes 兼容,因此您可以使用合作伙伴和 Kubernetes 社区提供的现有工具和插件。所有标准 Kubernetes 环境中运行的应用程序均完全兼容,并可轻松迁移到 Amazon EKS。借助 Amazon EKS,您可以专注于构建和运行 Kubernetes 应用程序,而无需管理底层 Kubernetes 控制平面基础设施。

高度可用

欢迎加入亚马逊云科技培训中心

从 0 到 1 轻松上手云服务,获取更多官方开发资源及培训教程

快速上手训练营

第一课:亚马逊云科技简介

本课程帮助您初步了解云平台与本地环境的差异,以及亚马逊云科技平台的基础设施和部分核心服务,包括亚马逊云科技平台上的弹性高可用架构,架构设计准则和本地架构迁移上云的基本知识。

亚马逊云科技技术讲师:李锦鸿

第二课:存储与数据库服务

您将在本课程中学习到亚马逊云科技上的三个存储服务分别是什么。我们也将在这个模块中为您介绍亚马逊云科技上的关系型数据库服务 Amazon Relational Database Service (RDS)。

亚马逊云科技资深技术讲师:周一川

第三课:安全、身份和访问管理

在这个模块,您将学习到保护您在亚马逊云科技上构建的应用的安全相关知识,责任共担模型以及身份和访问管理服务, Identity and Access Management (IAM) 。同时,通过讲师演示,您将学会如何授权给 EC2 实例,允许其访问 S3 上的资源。

亚马逊云科技技术讲师:马仲凯

了解更多入门学习计划 »

快速上手训练营

账单设置与查看

账单设置与查看

快速注册账号 享用免费套餐

跟随注册步骤详解,三分钟快速创建账号,领取免费权益

打开中国区账号注册页面

01 填写您 注册账号的邮箱,点击“继续”

02 查看您的 注册账号邮箱

注: 发件箱 no-reply@register.signin.amazonaws.com.cn

03 输入 邮箱中收到的验证码,点击“继续”

注: 该链接中的内容显示语言是与您的网页浏览器设置相一致的,您可以根据需要自行调整语言栏。

立即开始注册 »

image

填写用户名密码

01 请设置您的 账号用户名

02 为您的帐号 设置密码

03 重新 输入密码

立即开始注册 »

图片

填写账号联系人以及公司信息

01 填写公司联系人 姓名全称

02 填写公司联系人的 联系电话

03 填写 公司名称

注: 公司名称请务必与您所提供的营业执照公司名称保持一致

04 填写 公司办公地址

注: 省份/自治区/直辖市 - 城市 - 区 - 街道门牌号以及楼层信息 - 邮政编码

05 请选择 是否需要发票

注: *附件-申请发票流程 供您参考

06 点击查看 客户协议 勾选方框表示您已阅读,并同意客户协议的条款

立即开始注册 »

图片

企业信息验证

01 在此上传 企业注册执照

02 请填写网络安全负责人的 姓名

注: 该字段务必与您下方提供的身份证号匹配或与证件上的姓名保持一致

03 请填写网络安全负责人的 联系方式

注: 有效的电子邮件地址 - 有效的中国内地 手机号码 - 座机号码(如无座机,请填写正确有效的手机号码)

04 在此上传网络安全负责人的 身份证件

注: 当您选择证件类型为“身份证”时,您需要填写正确的身份证号码,选择其他证件类型时,您需要上传证件扫描稿

立即开始注册 »

图片

手机验证与支持计划

01 在此填写 手机号

02 请输入您收到的 4 位 验证码

03 请点击 继续

04 请根据需求 选择一个支持计划

立即开始注册 »

图片