运维架构服务 docker:docker 简介

30 篇文章 0 订阅
1 篇文章 0 订阅
本文介绍了Docker的核心概念,包括其作为应用程序部署引擎的功能,主要组件如Docker客户端、服务器、镜像、Registry和容器,以及Docker在本地开发、服务一致性、测试、多租户云服务和资源隔离等方面的作用。着重讲解了Linux内核命名空间在实现容器隔离中的关键作用。
摘要由CSDN通过智能技术生成

一、 简介

Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。Docker在虚拟化的容器执
行环境中增加了一个应用程序部署引擎。该引擎的目标就是提供一个轻量、快速的环境,能够运行开发者的程序,并方便高效地将程序从开发者的笔记本部署到测试环境,然后再部署到生产环境。Docker极其简洁,它所需的全部环境只是一台仅仅安装了兼容版本的Linux内核和二进制文件最小限的宿主机。


大多数Docker容器只需不到一秒钟即可启动,由于去除了管理程序的开销,Docker容器拥有
很高的性能,同时同一台宿主机中也可以运行更多的容器,使用户可以尽可能充分地利用系统资源。

二、 Docker组件

Docker客户端和服务器、Docker镜像、Registry、Docker容器

2.1 Docker客户端和服务器

Docker是一个客户-服务器(C/S)架构的程序。Docker客户端只需向Docker服务器或守护
进程发出请求,服务器或守护进程将完成所有工作并返回结果。Docker提供了一个命令行
工具docker,可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。

2.2 Docker镜像

Docker镜像是一个只读的模板。例如,一个镜像可以包含安装了Apache Web服务应用的
Ubuntu操作系统。镜像可以用来创建Docker容器。Docker提供了构建新镜像或升级原有镜
像的较为便利的方式,或者你也可以下载别人已经创建好的镜像。Docker镜像是Docker的
构建组件。
镜像是构建Docker世界的基石。用户基于镜像来运行自己的容器。镜像也是Docker生命周
期中的“构建”部分。镜像是基于联合文件系统的一种层式的结构。由一系列指令一步一步构建出来。例如:添加一个文件,执行一个命令,打开一个端口。
也可以把镜像当做容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。

2.3 Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker 仓库分为公有和私
有。公有的 Docker 仓库名字是 Docker Hub。Docker Hub 提供了庞大的镜像集合供使用。这些镜像可以是自己创建,或者在别人的镜像基础上创建。Docker 仓库是 Docker 的分发部
分。
Docker Hub 是一个用于分享、管理 Docker 容器的 Docker SaaS 平台。由Docker公司负责维护的公共注册中心,包含超过15,000个可用来下载和构建容器的镜像,并提供认证、工作
组结构、工作流工具(比如webhooks)、构建触发器以及私有工具。

2.4 Docker容器

Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。
每一个 Docker 容器都是从 Docker 镜像创建的。Docker 容器可以运行、开始、停止、移动和删除。每一个 Docker 容器都是独立和安全的应用平台,Docker 容器是 Docker 的运行部分

三、 Docker作用

1、 加速本地开发和构建流程,使其更加高效、更加轻量化。本地开发人员可以创建、运行并分享Dokcer容器。容器可以在开发环境中构建,然后轻松地提交到测试环境中,并最终进入生产环境。
2、 能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。这一点在面向服务的架构和重度依赖微型服务的部署中尤其实用。
3、 用Docker创建隔离的环境进行测试。例如,用Jenkins这样的持续集成工具启动一个用于测试的容器。
4、 构建一个多用户的平台即服务基础设施。Docker能够作为云计算的多租户容器,使用
Docker能容易为每个租户创建运行应该多个实例,这得益其灵活的快速环境以及有效diff
命令。
5、 高性能、超大规模的宿主机部署。
6、 Docker通过创建进程的容器,不必重新启动操作系统,几秒内能关闭,你可以在数据中心创建或销毁资源,不用担心额外消耗。典型的数据中心利用率是30%,通过更积极的资源
分配,以低成本方式对一个新的实例实现一个更聚合的资源分配,我们很容易超过这个
利用率,大大提高数据中心的利用效率。

四、 命名空间

命名空间是Linux内核为实现容器虚拟化而引入的特性。每个容器都有自己的命名空间,这保证了容器之间的互不影响。利用该特性,容器实现了在内核、文件系统、网络、PID、UID、IPC、内存、硬盘、CPU等资源的隔离,而不再是应用进程直接共享的状态。


1、进程命名空间
Linux通过命名空间管理进程号,同一进程在不同的命名空间中的进程号是不同的。进程命名空间是一个父子关系的结构,子空间的进程可看到父进程的ID。
2、网络命名空间
通过网络命名空间可以实现网络的完全隔离。一个网络命名空间为进程提供了一个完全独立的网络协议栈的视图。包括网络设备接口、IPv4和IPv6协议栈、IP路由表、防火墙规则、sockets等。Docker可采用虚拟网络设备(Virtual Network Device)的方式将不同命名空间的网络设备连接在一起。默认情况下,容器的虚拟网卡将与宿主机的docker0网桥连接在一起。
3、IPC命名空间
进程间交互(Interprocess Communication - IPC)的信息包括信号量、消息队列、共享内存等。同一IPC命名空间的进程可以交互;否则不行。PID命名空间和IPC命名空间可以组合使用。
4、挂载命名空间
挂载命名空间可以将一个进程放到一个特定的目录执行,且允许不同命名空间的进程看到的文件结构不同,将各个命名空间中的进程看到的文件目录隔离。
5、UTS命名空间
UTS(UNIX Time-sharing System)命名空间可以另每个容器拥有独立的主机名和域名,从而虚拟出一个拥有独立主机名和独立网络空间的环境。默认情况下,Docker容器的主机名就是容器的ID。
6、用户命名空间
每个容器拥有不同的用户和组ID,容器可以使用自身内部的特定用户执行程序,而非宿主机系统上存在的用户。每个容器内部都可以有root账号,且跟宿主机不在同一命名空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纵然间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值