《第一本Docker书(修订版)》——1.2 Docker组件

简介: Docker可以帮用户构建和部署容器,用户只需要把自己的应用程序或服务打包放进容器即可。我们刚刚提到,容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或打包阶段,而容器则是启动或执行阶段。

本节书摘来自异步社区《第一本Docker书(修订版)》一书中的第1章,第1.2节,作者:【澳】James Turnbull(詹姆斯•特恩布尔)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.2 Docker组件

我们来看看Docker的核心组件:

Docker客户端和服务器,也称为Docker引擎;
Docker镜像;
Registry;
Docker容器。
1.2.1 Docker客户端和服务器
Docker是一个客户端/服务器(C/S)架构的程序。Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。Docker守护进程有时也称为Docker引擎。Docker提供了一个命令行工具docker以及一整套RESTful API[2]来与守护进程交互。用户可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。图1-1描绘了Docker的架构。

screenshot

图1-1 Docker架构

1.2.2 Docker镜像
镜像是构建Docker世界的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合(Union)文件系统的一种层式的结构,由一系列指令一步一步构建出来。例如:

添加一个文件;
执行一个命令;
打开一个端口。
也可以把镜像当作容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。在本书中,我们将会学习如何使用已有的镜像,同时也会尝试构建自己的镜像。

1.2.3 Registry
Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营的公共Registry叫作Docker Hub。用户可以在Docker Hub[3]注册账号[4],分享并保存自己的镜像。

根据最新统计,Docker Hub上有超过10 000注册用户构建和分享的镜像。需要Nginx Web服务器[5]的Docker镜像,或者Asterix开源PABX系统[6]的镜像,抑或是MySQL数据库[7]的镜像?这些镜像在Docker Hub上都有,而且具有多种版本。

用户也可以在Docker Hub上保存自己的私有镜像。例如,包含源代码或专利信息等需要保密的镜像,或者只在团队或组织内部可见的镜像。

用户甚至可以架设自己的私有Registry。具体方法会在第4章中讨论。私有Registry可以受到防火墙的保护,将镜像保存在防火墙后面,以满足一些组织的特殊需求。

1.2.4 容器
Docker可以帮用户构建和部署容器,用户只需要把自己的应用程序或服务打包放进容器即可。我们刚刚提到,容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或打包阶段,而容器则是启动或执行阶段。

总结起来,Docker容器就是:

一个镜像格式;
一系列标准的操作;
一个执行环境。
Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计哲学中,唯一不同的是:集装箱运输货物,而Docker运输软件。

每个容器都包含一个软件镜像,也就是容器的“货物”,而且与真正的货物一样,容器里的软件镜像可以进行一些操作。例如,镜像可以被创建、启动、关闭、重启以及销毁。

和集装箱一样,Docker在执行上述操作时,并不关心容器中到底塞进了什么,它不管里面是Web服务器,还是数据库,或者是应用程序服务器什么的。所有容器都按照相同的方式将内容“装载”进去。

Docker也不关心用户要把容器运到何方:用户可以在自己的笔记本中构建容器,上传到Registry,然后下载到一个物理的或者虚拟的服务器来测试,再把容器部署到Amazon EC2主机的集群中去。像标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。

使用Docker,可以快速构建一个应用程序服务器、一个消息总线、一套实用工具、一个持续集成(continuous integration,CI)测试环境或者任意一种应用程序、服务或工具。可以在本地构建一个完整的测试环境,也可以为生产或开发快速复制一套复杂的应用程序栈。可以说,Docker的应用场景相当广泛。

相关文章
|
4月前
|
Ubuntu 大数据 Linux
【大数据组件】一篇文章让你快速入门Docker
【大数据组件】一篇文章让你快速入门Docker
39 0
|
5月前
|
NoSQL Linux MongoDB
轻松掌握组件启动之MongoDB:快速入门、Linux安装和Docker配置指南
本文总结了MongoDB的快速入门、Linux安装和Docker配置指南。它提供了一步步的操作指引,帮助读者迅速上手MongoDB,并了解如何在Linux环境下进行安装、启动和配置。此外,文章还介绍了使用Docker安装和配置MongoDB的方法,使读者能够更轻松地部署和管理MongoDB实例。
|
7月前
|
大数据 关系型数据库 MySQL
基于Docker搭建大数据集群(二)基础组件配置
基于Docker搭建大数据集群(二)基础组件配置
|
11月前
|
存储 Linux 测试技术
Docker系列第01部分:介绍+虚拟化+什么是Decker+组件
不同的应用程序可能会有不同的应用环境,有些软件安装之后会有端口之间的冲突,这时候,可以使用虚拟机来实现隔离,但是使用虚拟机的成本太高,而且消耗硬件。
283 0
|
应用服务中间件 Shell API
Docker基础组件、安装启动和Docker生命周期
Docker安装部署 Docker引擎 运行镜像生成容器。应用程序跑在容器中 Docker Daemon 安装使用Docker,得先运行Docker Daemon进程,用于管理Docker,如: - 镜像 images - 容器 containers - 网络 network - 数据卷 Data Volumes
163 0
|
负载均衡 关系型数据库 MySQL
Docker 可以通过创建多个容器,分别部署 Linux、Nginx、MySQL 和 PHP 等组件,为什么不可以一个容器包含所有呢?底层原理是什么?
Docker 可以通过创建多个容器,分别部署 Linux、Nginx、MySQL 和 PHP 等组件,为什么不可以一个容器包含所有呢?底层原理是什么?
329 0
|
弹性计算 Cloud Native Linux
【组件云原生】docker原理浅析
Docker已经成为容器技术的代名词,但实际上,Docker只是linux 容器技术的一种封装,那么为什么会有容器技术的出现,容器技术解决了什么问题?为什么又会有Docker的出现,Docker又解决了什么问题?Docker核心原理是什么。接下来这篇文章,我们将浅析Docker的出现和原理。
95 0
|
SQL 消息中间件 Prometheus
spring cloud 二代架构依赖组件 docker全配置放送
Spring Cloud Alibaba 主要包含 Sentinel、Nacos、RocketMQ、Dubbo、Seata 等组件。 二代引入了 Spring Cloud Alibaba
spring cloud 二代架构依赖组件 docker全配置放送
|
Ubuntu Linux 测试技术
【大数据组件】一篇文章让你快速入门Docker
Docker 是什么? Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。 Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
【大数据组件】一篇文章让你快速入门Docker
|
Kubernetes Shell Docker
Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
0、前言  整体架构目录:ASP.NET Core分布式项目实战-目录 k8s架构目录:Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列目录   1、部署master组件 master 服务器的组件有:kube-apiserver、kube-controller-manager、kube-scheduler 因此需要下载k8s master,下载地址:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.9.md ,当然大家可以下载更高版本的。
1294 0