容器&&Docker简介

什么是容器

容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能够在生产系统的虚拟机、物理服务器或公有云主机上运行。Docker是容器的一种,还有其他容器,比如 CoreOS 的 rkt。

什么是Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙盒机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。

沙盒也叫沙箱,英文 sandbox。在计算机领域指一种虚拟技术,且多用于计算机安全技术。安全软件可以先让它在沙盒中运行,如果含有恶意行为,则禁止程序的进一步运行,而这不会对系统造成任何危害。

Docker 是 dotCloud 公司开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于 go语言并遵从 Apache2.0 协议开源。

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的 container 中,然后发布到任何流行的 Linux 机器上。

容器与VM区别

容器虚拟化,Operating System Virtualization ,使用 Linux 内核中的 namespaces 和 cgroups 实现进程组之间的隔离。是用内核技术实现的隔离,所以它是一个共享内核的虚拟化技术。容器则说直接运行在操作系统内核之上的用户空间容器,因此,虚拟化也被称为“操作系统级虚拟化”,容器技术可以让多个独立的用户空间运行在同一台宿主机上。

在这里插入图片描述
传统虚拟化是站在硬件物理资源的基础上,虚拟出多个OS,然后在OS的基础上构建相对独立的程序运行环境, Host 中通过 Hypervisor 层实现安装多个 GuestOS,每个 GuestOS 都有自己的内核,和主机的内核不同,GuestOS 之间完全隔离。

通过上述比较,可以看出Dokcer轻量得多,因此其资源占用、性能消耗相比传统虚拟化都有很大优势。从技术角度出发来讲,服务器虚拟化解决的核心问题是资源调配,容器解决的核心问题是应用开发、测试和部署

Docker架构

在这里插入图片描述

1、docker的客户端和服务器

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

2、Docker镜像(Images)

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

  • 添加一个文件
  • 执行一个命令
  • 打开一个窗口

也可以把镜像当做容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。

3、Registry

Docker用Registry来保存用户构建的镜像。Registry分为公有和私有两种。Docker公司运营的公共Registry叫做Docker Hub。用户可以在Docker Hub注册账号,分享并保存自己的镜像。国内的公开仓库包括阿里云、网易云等。

4、容器(Containers)

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

总结起来,Docker容器就是:

  • 一个镜像格式;
  • 一系列标准的操作
  • 一个执行环境

Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计哲学中,唯一不同的是:集装箱运输货物,而Docker运输软件。

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

和集装箱一样,Docker在执行上述操作时,并不关心容器中到底塞了什么,也不关心要把容器运到何方。和标准集装箱一样,Docker容器方便替换,可以叠加,易于分发,并且尽量通用。

使用Docker的优势

1、交付物标准化

Docker是软件工程领域的“标准化”交付组件,最恰到好处的类比是“集装箱”。

集装箱将零散、不易搬运的大量物品封装成一个整体,集装箱更重要的意义在于它提供了一种通用的封装货物的标准,卡车、火车、货轮、桥吊等运输或搬运工具采用此标准,隧道、桥梁等也采用此标准。以集装箱为中心的标准化设计大大提高了物流体系的运行效率。

传统的软件交付物包括:应用程序、依赖软件安装包、配置说明文档、安装文档、上线文档等非标准化组件。Docker的标准化交付物称为“镜像”,它包含了应用程序及其所依赖的运行环境,大大简化了应用交付的模式。

2、一次构建,多次交付

类似于集装箱的“一次装箱,多次运输”,Docker镜像可以做到“一次构建,多次交付”。当涉及到应用程序多副本部署或者应用程序迁移时,更能体现Docker的价值。

3、应用隔离

集装箱可以有效做到货物之间的隔离,使化学物品和食品可以堆砌在一起运输。Docker可以隔离不同应用程序之间的相互影响,但是比虚拟机开销更小。

小结:容器技术部署速度快,开发、测试更敏捷;提高系统利用率,降低资源成本。

发布了22 篇原创文章 · 获赞 2 · 访问量 589

猜你喜欢

转载自blog.csdn.net/weixin_42955452/article/details/105075093