前言

最近面试了一家国企,交谈愉快,对方的工程师问到容器时,突然愣了一下。脑子里有学习前端时候学习的docker,但印象里docker可不能代表容器技术,于是学习容器相关知识后整理相关知识以作巩固。

什么是容器

有点开发基础的同学都知道,我们开发出来的无论是web亦或是其他应用。必须跑在某种特定的环境中才可以运行,例如nodeJS环境啦,各种依赖啦。容器可以让开发者将应用与库和其他依赖项打包,提供独立环境来运行其软件服务。
诶嘿,这时候有同学就要问,为什么不直接虚拟机呢,反正都是部署应用嘛。
容器比虚拟机更加轻量化
容器在操作系统级别进行虚拟化,而虚拟机在硬件级别进行虚拟化
容器共享操作系统内核,其占用的内存与虚拟机相比微乎其微
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

跑偏了跑偏了,但做为学习者,我认为Google给出的定义解释比较中肯:容器是轻量级应用代码包,它还包含依赖项,例如编程语言运行时的特定版本和运行软件服务所需的库。

容器技术就像集装箱运载一样,我把货物一辆兰博基尼跑车(好比开发好的应用APP),打包放到一容器集装箱里,它通过货轮可以轻而易举的从上海码头(CentOS7.2环境)运送到纽约码头(Ubuntu14.04环境)。而且运输期间,我的兰博基尼(APP)没有受到任何的损坏(文件没有丢失),在另外一个码头卸货后,依然可以完美风骚的赛跑(启动正常)。
以上红字引用
作者:王中阳Go
来源:稀土掘金

docker

如果只看容器技术,过于抽象。结合docker了解容器技术。
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 版本开始,则进一步演进为使用 runC 和 containerd。

docker基本概念

1、镜像(Image)
2、容器(Container)
3、仓库(Repository)

镜像 Image

作系统分为 内核 和 用户空间。对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持。而 Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:18.04 就包含了完整的一套 Ubuntu 18.04 最小系统的 root 文件系统。
Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
因为镜像包含操作系统完整的 root 文件系统,其体积往往是庞大的,因此在 Docker 设计时,就充分利用 Union FS 的技术,将其设计为分层存储的架构。所以严格来说,镜像并非是像一个 ISO 那样的打包文件,镜像只是一个虚拟的概念,其实际体现并非由一个文件组成,而是由一组文件系统组成,或者说,由多层文件系统联合组成。

容器 Container

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

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

容器存储层的生存周期和容器一样,容器消亡时,容器存储层也随之消亡。因此,任何保存于容器存储层的信息都会随容器删除而丢失。
按照 Docker 最佳实践的要求,容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者 绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。

仓库 Registry

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

云容器

了解了前文,那么云容器其实就是“云上”的容器。云容器是位于云中的可移植数字“隔间”,其中容纳单个运行时环境中的一系列应用文件。它们与其他技术容器大同小异,==唯一的区别在于所处的位置。==不再赘述

容器,容器技术,云容器相关入门知识相关推荐

  1. 容器编排技术 -- AWS EC2快速入门

    容器编排技术 -- AWS EC2快速入门 前提条件 1.您需要一个AWS账户,访问http://aws.amazon.com获得. 2.安装并配置AWS命令行界面. 3.你需要一个拥有EC2全部权限 ...

  2. 容器编排技术 -- Google Computer Engine入门

    容器编排技术 --  Google Computer Engine入门 下面的例子用4个节点虚拟机和1个主虚拟机(也就是说集群中使用了5个虚拟机)创建了一个Kubernetes集群.您可以在您的工作站 ...

  3. 容器编排技术 -- Init 容器

    容器编排技术 -- Init 容器 1 理解 Init 容器 1.1 与普通容器的不同之处 2 Init 容器能做什么? 2.1 示例 2.2 使用 Init 容器 3 具体行为 3.1 资源 3.2 ...

  4. 容器化技术(Docker相关)

    容器化技术的背景是什么? 在软件开发过程中环境配置永远是最让人头疼的在开发之前我们需要准备各种运行环境.IDE及辅助工具同时软件部署也为程序员的谢顶助力三分. 搭建不同语言.不同技术栈适配的运行环境还 ...

  5. 【阿里云-容器】阿里云容器服务Kubernetes版快速入门

    一.部署并公开 本步骤指导您如何在ACK集群中快速部署一个无状态应用(Deployment),即魔方游戏,并将该应用向公网公开.关于创建Deployment的详细参数描述,请参见创建无状态工作负载De ...

  6. 容器化技术与容器服务

    准备docker环境 首先su root切换到root用户 升级内核 升级内核 reboot后查看内核版本为更新的版本 用国内阿里云安装 # Set up repository sudo yum in ...

  7. 容器化技术最佳实践1--容器化技术简介与Docker入门

    容器化技术最佳实践1–容器化技术简介与Docker入门 文章目录 容器化技术最佳实践1--容器化技术简介与Docker入门 容器化简介 通过虚拟化了解容器化 对开发和运维的好处 容器化部署特点 什么情 ...

  8. Linux 容器化技术详解(虚拟化、容器化、Docker)

    虚拟化是过去用来充分利用物理资源的最常用方法.早年间,我们可以用一台服务器运行一个操作系统,处理一个任务,带来的问题是资源利用率极其不足,计算机的潜能并不能完全发挥,而后多道批处理系统.分时系统相继出 ...

  9. 华为云-容器引擎CCE-基本概念

    云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的.高性能的企业级Kubernetes集群,支持运行Docker容器.借助云容器引擎,您可以在华为云上轻松部署.管理 ...

最新文章

  1. 小程序订阅消息 订阅消息开发
  2. 输入法图标(语言栏)不见了怎么办
  3. linux gcc 内联汇编入门
  4. python怎么找资源_查找目标文件太慢了,用好搜索引擎,让你比Python找资源更快捷...
  5. [***]HZOJ 优美序列
  6. ios关于相机访问权限设置
  7. 2020CCPC(长春) - Combination Lock(二分图博弈)
  8. PHP 设计模式六大原则
  9. Java 之单元测试
  10. 用好pypi,提高开发速度
  11. swift 笔记 (十三) —— 继承
  12. LOJ2542 PKUWC2018随机游走(概率期望+容斥原理)
  13. springboot 项目maven 打包错误
  14. 施密特:乔布斯影响力还没有完全释放
  15. 3. XML 树结构
  16. 关于网狐游戏vs2003移植到vs2013
  17. 动态分级存储特性-SmartTier
  18. Boost Log : Trivial logging
  19. 伦斯勒理工学院计算机科学专业强吗,伦斯勒理工学院专业排名一览及最强专业推荐(USNEWS美国大学排名)...
  20. 膨胀卷积(空洞卷积)

热门文章

  1. Spring MVC 使用支付宝接口DEMO
  2. 雪碧图原理和使用方法
  3. WebRTC 音频抗弱网技术(下)
  4. 关于Epson喷墨打印机的记录
  5. ESP32 学习笔记(九)SPI - SPI Slave
  6. 手写系列之手写LM(Levenberg–Marquardt)算法(基于eigen)
  7. omnigraffle 导出html,OmniGraffle使用的10个小技巧
  8. html特殊字符如大于小于号的写法
  9. Ndd v2.0 发布,终于等到了
  10. 3-7 安全技术:数字证书(网络身份证)