读书笔记-第一本Docker书:Docker简介

网友投稿 269 2022-09-19

读书笔记-第一本Docker书:Docker简介

Docker时一个能够把开发的应用程序自动部署到容器的开源引擎。Docker的核心组件:Docker客户端和服务器(也称为Docker引擎),Docker镜像,Registry,Docker容器。

Docker客户端和服务器

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

Docker容器

Docker可以帮用户构建和部署容器,用户只需要把自己的应用程序或服务打包放进容器即可。容器是基于镜像启动起来的,容器中可以运行一个或多个进程。镜像是Docker生命周期中的构建或打包阶段,而容器则是启动或执行阶段。Docker容器就是一个镜像格式、一系列标准的操作、一个执行环境。每个容器都包含一个软件镜像,也就是容器的货物。容器里的软件镜像可以进行一些操作,例如,镜像可以被创建、启动、关闭、重启以及销毁。

Docker镜像

镜像是构建Docker世界的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周期中的“构建”部分。镜像是基于联合文件系统的一种层式的结构,由一系列指令一步一步构建出来。例如:添加一个文件,执行一个命令,打开一个端口。也可以把镜像当作容器的“源代码”。镜像体积很小,易于分享、存储和更新。

Registry

Docker用Registry来保存用户构建的镜像。Registry分为公共和私有两种。Docker公司运营的公共Registry叫做Docker Hub。用户也可以在Docker Hub上保存自己的私有镜像。例如,包含源代码或专利信息等需要保密的镜像,或者只在团队或组织内部可见的镜像。用户甚至可以架设自己的私有Registry。

概念

说明

Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

Docker 容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker SDK (与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

Docker与配置管理

Docker包含一套镜像构建和镜像管理的解决方案。镜像是分层的,可以对其进行迅速的迭代。Docker的特性能够帮助减轻许多传统镜像管理中的麻烦。虽然现在还难以确定Docker是否可以完全取代配置管理工具,但是从幂等性和内省性来看,Docker确实能够获得非常好的效果。Docker本身还是需要在主机上进行安装、管理和部署的。而主机也需要被管理起来。Docker容器需要编配、管理和部署,也经常需要与外部服务和工具进行通信,而这些恰恰是配置管理工具所擅长的。

Docker技术组件包括:一个原生的Linux容器格式(Docker中称为libcontainer);Linux内核的命令空间(namespace),用于隔离文件系统、进程和网络;文件系统隔离(每个容器都有自己的root文件系统);进程隔离(每个容器都运行在自己的进程环境中);网络隔离(容器间的虚拟网络接口和IP地址都是分开的);资源隔离和分组(使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器);写时复制(文件系统都是通过写时复制创建的,意味着文件系统是分层的、快速的,而且占用的磁盘空间更小);日志(容器产生的STDOUT、STDERR和STDIN这些IO流都会被收集并记入日志,用来进行日志分析和故障排错);交互式shell(用户可以创建一个伪tty终端,将其连接到STDIN,为容器提供一个交互式的shell)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Greenplum数据库故障分析——semop(id=2000421076,num=11) failed: invalid argument
下一篇:第16周OJ实践3 结构体--学生信息排序
相关文章

 发表评论

暂时没有评论,来抢沙发吧~