首页 > 其他分享 >Docker基本概念(LXC?镜像、容器、仓库是什么?容器和虚拟机又是什么?)(一)

Docker基本概念(LXC?镜像、容器、仓库是什么?容器和虚拟机又是什么?)(一)

时间:2022-12-27 09:22:47浏览次数:58  
标签:容器 虚拟化 虚拟机 LXC 镜像 Docker

学习Docker前,我们有必要了解下Docker的前生LXC(Linux Container)。

一、LXC介绍

LXC 可以提供轻量级的虚拟化,用来隔离进程和资源,和我们传统观念中的全虚拟化完全不一样,非常轻量级。LXC 可以将单个操作系统管理的资源划分到独立的组中,和传统的虚拟化技术相比,LXC 有如下一些优势:
和宿主机使用同一个内核,所以性能损耗小
不需要指令级模拟
不需要即时编译
容器可以在 CPU 核心的本地运行指令,不需要任何专门的解释机制
避免了虚拟化和系统调用中的复杂性
轻量级隔离,隔离的同时还可以和宿主机共享资源
LXC 有点像 chroot,提供了一个拥有自己进程和网络空间的虚拟环境,但是和虚拟机又不一样,因为 LXC 是一种操作系统层面上的资源的虚拟化。

chroot 简介
chroot(change root),在 Linux 系统中,系统默认的目录就都是以 / 也就是根目录开头的,chroot 的使用能够改变当前的系统根目录结构,通过改变当前系统的根目录,我们能够限制用户的权利,在新的根目录下并不能够访问旧系统根目录的结构个文件,也就建立了一个与原系统完全隔离的目录结构。

二、什么是 Docker

Docker 并不是 LXC 替代品,Docker 底层就是使用的 LXC 来实现,LXC 将 Linux 进程沙盒化,使得进程之间相互隔离,还可以共享宿主机的资源。在 LXC 的基础上,Docker 提供了一系列更加强大方便的功能,使得 Docker 成为了现在最火的虚拟化技术。

由于之前我们的后台在开发和运维阶段的环境是不一致的,这就导致了 Docker 的出现,因为我们通过 Docker 可以将程序运行的环境也一起打包到版本控制去了,这样就排除了因为环境不同造成的各种麻烦事情了,也不会出现在本地可以在线上却不行这样的窘境了。

Docker 是一个开源的应用容器引擎,基于 go 语言开发,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 服务器。容器是一个沙箱机制,相互之间不会有影响(类似于我们手机上运行的 app),并且容器开销是很低的。

用官方的话来说,Docker 受欢迎,是因为以下几个特点:

  • 灵活性:即使是最复杂的应用也可以集装箱化
  • 轻量级:容器利用并共享主机内核
  • 可互换:您可以即时部署更新和升级
  • 便携式:您可以在本地构建,部署到云,并在任何地方运行
  • 可扩展:您可以增加并自动分发容器副本
  • 可堆叠:您可以垂直和即时堆叠服务

三、Docker 几个重要概念

在了解了 Docker 是什么之后,我们需要先了解下 Docker 中最重要的3个概念:镜像、容器和仓库。

3.1 镜像

是一个只读模板,带有创建 Docker 容器的说明,一般来说的,镜像会基于另外的一些基础镜像并加上一些额外的自定义功能来组成。比如,你可以构建一个基于 Centos 的镜像,然后在这个基础镜像上面安装一个 Nginx 服务器,这样就可以构成一个属于我们自己的镜像了。

3.2 容器

是一个镜像的可运行的实例,可以使用 Docker REST API 或者 CLI 命令行工具来操作容器,容器的本质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

3.3 仓库

registry 是用来存储 Docker 镜像的仓库,Docker Hub 是 Docker 官方提供的一个公共仓库,而且 Docker 默认也是从 Docker Hub 上查找镜像的,当然你也可以很方便的运行一个私有仓库,当我们使用 docker pull 或者 docker run 命令时,就会从我们配置的 Docker 镜像仓库中去拉取镜像,使用 docker push 命令时,会将我们构建的镜像推送到对应的镜像仓库中,registry 可以理解为用于镜像的 github 这样的托管服务。

四、容器和虚拟机

上面我们说到了容器是在 Linux 上本机运行,并与其他容器共享主机的内核,它运行一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。

而虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源需要更多,但是非常安全,因为是独立的操作系统,独立的内核。

来自官网 https://www.docker.com/resources/what-container/

下一篇将介绍支持Docker的底层技术
(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢)

标签:容器,虚拟化,虚拟机,LXC,镜像,Docker
From: https://www.cnblogs.com/zhangyongli2011/p/17007334.html

相关文章

  • Docker容器与Docker网络模式
    一、Docker容器操作1、容器创建将镜像加载到容器的过程。新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器1234567格式......
  • Pod容器健康探测
    百度网盘链接:https://pan.baidu.com/s/15t_TSH5RRpCFXV-93JHpNw?pwd=8od3 提取码:8od38Pod容器健康探测8.1为什么要对容器做探测?在Kubernetes中Pod是最小的计算单元,......
  • 详解如何进入、退出docker容器的方法
    参考地址:https://blog.csdn.net/qq_46416934/article/details/1244909781启动docker服务首先需要知道启动docker服务是:servicedockerstart或者:systemctlstartdoc......
  • Docker操作镜像、容器
                                                         ......
  • Spring IOC源码(九):IOC容器之 单例对象的创建
    1、源码解析getBean(name)是在IOC容器的顶级接口BeanFactory中定义,由其子类AbstractBeanFactory实现的方法。是IOC容器启动过程中的核心方法。核心方法流程getBean-......
  • Java类MemoryUsage查看虚拟机的使用情况
     Arthas是阿里巴巴开源的一款监控java进程的工具,可以有效监控CPU、内存使用情况,更厉害的是可以帮助开发人员深入排查java代码的问题,比如java进程占用cpu过高是哪一个线程......
  • 一文解读机密容器的崛起和发展 | 龙蜥技术
    在 ​​2022云栖大会龙蜥峰会云原生专场​​上,来自阿里云操作系统技术专家冯世舫和Intel系统软件工程部高级研发经理朱江云分享了《机密容器的崛起和发展》技术演讲,以下......
  • SAP UI5 应用里一些容器控件的介绍
    sap.m.Shell控件可用作应用程序的根元素。它可以包含App或SplitApp控件。Shell为整个应用程序提供了一些总体功能,并负责在桌面浏览器平台上进行视觉适配,例如应用程......
  • 在新建的虚拟机中,重新遇到的几个问题:
    1.​​centos7没有IP​​2.​​vi保存文件时候的一些问题​​3.安装nginx出现:​​make:***没有规则可以创建“default”需要的目标“build”。停止。​​核心问题;安装......
  • Spring IOC源码(八):IOC容器之 完成容器的初始化
    1、源码解析1.1、整体逻辑剖析finishBeanFactoryInitialization(beanFactory);初始化非懒加载的单实例,完成IOC容器的初始化操作。1//完成IOC容器的初始化操作......