参考了网上的一些内容:javaGuide等

目录

  • 容器相关概念
    • 什么是容器
      • 容器概念
    • 物理机、虚拟机和容器的差异
  • 什么是docker
    • 概念
    • 特点
    • 容器和虚拟机的对比
  • docker基本概念
    • 镜像(Image):特殊的文件系统
    • 容器(Container):镜像运行的实体
    • 仓库(Repository):镜像存储文件的地方
  • docker底层原理
    • 虚拟化技术
    • docker基于LXC虚拟容器技术

容器相关概念

什么是容器

容器概念

将软件打包成标准单元,用于开发、交付和部署

  • 容器镜像是轻量的、可执行的独立软件包
  • 在任何环境都可以始终如一的运行(Windows、Linux)
  • 容器赋予了软件独立性,有助于避免环境配置差异和不同人员软件版本对开发过程的影响

物理机、虚拟机和容器的差异

物理机就是个人电脑,资源是完全相互独立的
虚拟机是虚拟一套硬件,在硬件之上运行完整的操作系统,共享物理机的硬件资源
容器是虚拟化的操作系统,而非硬件,容器之间共享同一操作系统的资源,隔离性比虚拟机低
物理机:

虚拟机:

容器:

什么是docker

概念

  • 软件容器平台
  • 利用Go开发,基于CGroup功能和namespace实现,对进程进行了封装隔离,属于操作系统层面的虚拟化技术
  • 可自动执行重复化任务
  • 用户可以方便的创建和使用容器,把自己的应用放入容器。还可以进行版本管理、复制、分享、修改

特点

  • 一致性运行环境:确保应用环境一致性
  • 更快的启动时间
  • 隔离性
  • 弹性扩展:能够处理集中爆发的服务器压力
  • 迁移方便
  • 持续交付和部署

容器和虚拟机的对比

简单来说,容器和虚拟机都是通过对资源的虚拟化实现隔离和分配的,但功能有所不同,容器虚拟化的是操作系统而虚拟机虚拟化的是硬件,因此,容器的隔离级别稍低,但可移植性更高

  • 虚拟机是虚拟化一套硬件之后,在其上运行完整的操作系统,在该系统内运行所需应用进程,适用于将单服务器通过隔离变成多服务器,隔离不同用户
  • 容器内的应用进程直接运行在宿主内核上(用户空间),容器没有自己的内核,容器相对来讲更轻便

docker基本概念

docker主要有三个基本概念:

  • 镜像(Image)
  • 容器(Container)
  • 仓库(Repository)

镜像(Image):特殊的文件系统

操作系统分为内核和用户态,内核启动后,会挂载root文件系统挂在用户空间支持。
Docker中的镜像(Image)就相当于是root文件系统
docker镜像是一个特殊的文件系统,除了提供容器运行时的程序、库、资源、配置等文件外,还包括运行时准备的一些配置参数(匿名卷、环境变量、用户等)。
镜像不包含任何动态数据,其内容构建之后也不会改变
docker的镜像利用了Union FS技术,采用分层存储架构,因此镜像实际上是由多层文件系统联合组成
镜像构建时,一层一层构建,前一层是后一层的基础,每层构建完之后就不在改变,后一层的任何改变都只发生在自己的层上。

容器(Container):镜像运行的实体

容器是镜像运行的实体,可以被创建、运行、暂停、删除等
属于自己独立的namespace

仓库(Repository):镜像存储文件的地方

存储和分发镜像的服务

docker底层原理

虚拟化技术

虚拟化技术是一种资源管理技术,通过对cpu、内存、磁盘空间的抽象和转换,呈现出可供分割、组合的一个或多个电脑配置环境。虚拟化资源一般包括计算能力和数据存储

docker基于LXC虚拟容器技术

LXC技术(Linux Container)主要是借助Linux内核中的CGroup功能和namespace来实现的,为软件提供一个独立的操作系统运行环境。

  • namespace:是Linux内核用来隔离内核资源的方式,进程只能看到自己namespace范围内的资源
  • CGroup (Control Group):是内核提供的一种可以限制、记录、隔离进程组(process group)所使用的物力资源(cpu、memory、i/o等)的机制
    cgroup和namespace对比:
    namespace是为了隔离进程组之间的资源;
    cgroup是为了对一组进程进行统一的资源监控和限制;

Docker原理及简单使用相关推荐

  1. 一篇不一样的docker原理解析 提高篇

    在上一篇 一篇不一样的docker原理解析 - uncle creepy的文章 - 知乎专栏 中,主要讨论了容器和虚拟机的区别,在实现细节上并没有深入,只是点到即止,在这篇提高篇中,将详细讨论容器的实 ...

  2. 深入了解RabbitMQ工作原理及简单使用

    深入了解RabbitMQ工作原理及简单使用 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchange介绍 ...

  3. 面试官留步!听我跟你侃会儿Docker原理

    1 Docker 简介 1.1 Docker 由来 Docker 是基于 Go 语言开发的一个容器引擎,Docker是应用程序与系统之间的隔离层.通常应用程序对安装的系统环境会有各种严格要求,当服务器 ...

  4. docker原理及基本概念

    Docker技术原理介绍 前言 玩docker有阵子,随着使用的频繁,学习的深入,愈发有了不不少的困惑,于是又回过头复习这些理论知识.还是那句话,温故而知新,每一次阅读都会有不一样的收获. 简介 Do ...

  5. 面试官:说一说 Docker 原理

    开发人员开发完一个电商项目,该 Jar 项目包含 Redis.MySQL.ES.Haddop等若干组件.开发人员自测无误后提交给测试进行预生产测试了. 测试:你的这个服务,我在进行单元测试跟数据核对的 ...

  6. docker原理介绍以及部署使用

    docker原理介绍以及部署使用 1. docker简介 2. docker架构概念 3. docker安装部署 3.1 安装环境 3.2 安装步骤 4. docker使用 4.1 镜像管理 4.2 ...

  7. 深入浅出Docker原理及实战(三)——制作Dockerfile

    声明:这是我在大学毕业后进入第一家互联网公司学习的内容 深入浅出Docker原理及实战系列第三篇,我主要分享如何制作一个Dockerfile,以及基本命令格式. Dockerfile简介 Docker ...

  8. Docker的RUN流程和Docker原理、Docker的常用命令、其他命令

    Docker的RUN流程和Docker原理 Run流程 底层原理 Docker是怎么工作的 Docker为什么比VM快 Docker的常用命令 帮助命令 镜像命令 查看镜像 搜索镜像 下载镜像 指定版 ...

  9. Docker原理(图解+秒懂+史上最全)

    文章很长,建议收藏起来,慢慢读! Java 高并发 发烧友社群:疯狂创客圈 奉上以下珍贵的学习资源: 免费赠送 经典图书:<Java高并发核心编程(卷1)> 面试必备 + 大厂必备 +涨薪 ...

最新文章

  1. python减小内存占用_如何将Python内存占用缩小20倍?
  2. CStringArray序列化处理
  3. Eclipse中propedit插件安装(解决property中文问题)
  4. Netty解决粘包和拆包问题的四种方案
  5. 高标准,严要求!数据中心发电机组的调试与验收工作
  6. 微信小程序【腾讯云开发】创建并上线小程序项目(涉及-数据库操作)
  7. ELK学习9_ELK数据流传输过程_问题总结2
  8. 12行代码AC_Leecode 495. 提莫攻击——Leecode每日一题系列
  9. HDU 5037 Frog(2014年北京网络赛 F 贪心)
  10. Vue组件-Confirm详解
  11. jqueryForm 异步上传图片文件
  12. [转]国内Linux操作系统发行商分类溯源
  13. 灵魂拷问:为什么5G路由器比2.4G路由器快?
  14. [UE4]委托代理:单播委托,多播委托,动态单播委托,动态多播委托,事件
  15. java.awt.eventdispatchthread_大神们,小弟来了!解决办法
  16. 任务二:实现求平方根关键算法(30 分)求 n 以内(不包括 n)同时能被 3 和 7 整除的所有自然数之和的平方根 s,然后将结果s 输出。例如若 n 为 1000 时,则 s=153.909
  17. RTX3050显卡怎么样 rtx3050显卡什么水平 rtx3050相当于gtx什么显卡
  18. 【附源码】Python计算机毕业设计社区生鲜电商平台
  19. 修改windows的主机映射文件(hosts文件)
  20. linux 查看开放的端口以及开放端口并且永久开放端口的方法

热门文章

  1. [转载]机器学习顶级会议及论文
  2. miniFTP项目实战六
  3. [log]值得学习的文章
  4. 中国IT工作者35岁后的发展出路调查报告(1)
  5. TCP协议三次握手过程
  6. 全双工,双工,单工的区别
  7. 怎样快速提高网站权重?
  8. STM32蜂鸣器播放音乐实例项目 【评论区留言领取项目资料】
  9. 50个使用标点符号设计的创意LOGO设计欣赏(下篇)
  10. sql链接oracle12514,客户端连接到oracle数据库出现12514错误