本篇主要对容器相关核心知识进行梳理,通过本篇的学习,我们可以对容器相关的概念有一个全面的了解,这样有利于后面的学习。

一、什么是容器?

容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任何地方以相同的方式运行。开发人员在本地创建的容器几乎无需任何修改就可以在生产环境上运行。

容器 VS 虚拟机

既然容器是为应用程序提供封装与隔离,那为什么不用虚拟机呢?我们首先来看下二者的对比:

从上图可以很明显看出,虚拟机是需要创建完整的操作系统环境以实现应用程序完全隔离,而容器则是共享宿主机操作系统这就使得容器的体积较虚拟机要小很多,并且由于启动容器不需要启动完整操作系统,所以容器相对于虚拟机部署和启动速度更快,开销更小也更容易迁移。

二、为什么需要容器

为什么需要容器?容器技术解决了什么问题?其实在本文开篇就说了,“容器是一种轻量级、可移植、自包含的软件打包技术”。即容器技术解决应用程序打包部署问题。如今的应用程序的在架构上较十几年前来说变得非常复杂,以前大部分应用程序以单体应用为主,通过负责均衡部署在多个物理机上,而现在很多应用程序都由多种服务组成并且部署在不同环境,这就对整个应用的部署提出挑战,在容器技术出来前,每次应用部署上线都会遇到各种各样的环境问题,这使得每一次发版都是一场噩梦。

基于这样的现状,Docker诞生了,它让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到生产环境上,这就极大解决了应用程序部署的环境依赖问题。

三、容器的架构与各组件介绍

1、Docker架构

Docker核心组件包括:

  • Docker客户端:Client

  • Docker服务端:Docker deamon

  • Docker镜像:Images

  • Docker容器:Containers

  • 镜像仓库:Registry

Docker采用C/S架构,客户端向服务端发请求,服务端负责构建、运行和分发容器。

2、Docker客户端

Docker客户端(docker 命令)是用户与Docker交互的主要方式,通过这些命令我们可以很方便的构建和运行容器。

3、Docker服务端

Docker deamon以Linux后台服务方式运行,监听并处理来自客户端的请求,并管理诸多Docker对象(镜像、容器、网络和存储)。

4、Docker Registry

Registry是用于存放Docker镜像的仓库,其分为公有仓库和私有仓库,比如我们使用Docker Hub就是公有镜像仓库,我们也可以搭建仅供自己使用的私有仓库。

5、Docker Images

Docker镜像可以看作是创建Docker容器的只读模板。镜像有多种创建方式:

  1. 从无到有创建镜像;

  2. 下载并使用别人创建好的镜像;

  3. 在现有镜像上创建新的镜像。

我们将镜像的内容和创建步骤描述在一个文本文件中,此文件就是Dockerfile,通过docker build <Dockerfile>命令我们可以构建一个镜像。

6、Container

Docker容器就是Docker镜像的运行实例,对于应用程序,镜像是其软件生命周期中的构建和打包阶段,而容器则是启动和运行阶段。

Docker 与 K8S学习笔记(二)—— 容器核心知识梳理的更多相关文章

  1. Docker 与 K8S学习笔记(七)—— 容器的网络

    本节我们来看看Docker网络,我们这里主要讨论单机docker上的网络.当docker安装后,会自动在服务器中创建三种网络:none.host和bridge,接下来我们分别了解下这三种网络: $ s ...

  2. K8S学习笔记之Kubernetes核心概念

    0x00  Kubernetes简介 Kubernetes(K8S)是Google开源的容器集群管理系统,其设计源于Google在容器编排方面积累的丰富经验,并结合社区创新的最佳实践. K8S在Doc ...

  3. Docker 与 K8S学习笔记(三)—— 镜像的使用

    前面的文章介绍过镜像的三种获取方式: 下载并使用别人创建好的镜像: 在现有镜像上创建新的镜像: 从无到有创建镜像. 本文主要介绍前两种. 一.下载镜像 在Docker Hub上有大量优质镜像可以使用, ...

  4. (C/C++学习笔记) 二十四. 知识补充

    二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...

  5. Docker 与 K8S学习笔记(十 二)容器间数据共享

    数据共享是volume的关键特性,今天我们来看一下通过volume实现容器与host.容器与容器之间共享数据. 一.容器与host共享数据 在上一篇中介绍到的bind mount和docker man ...

  6. Docker 与 K8S学习笔记(二十)—— 使用Downward API向容器注入Pod信息

    Kubernetes在创建Pod时,会为Pod和容器设置一些额外的信息,比如Pod名称.Pod IP.Node IP.Label.Annotation.资源限制等,我们经常会在应用程序中使用到这些数据 ...

  7. Docker 与 K8S学习笔记(九)—— 容器间通信

    容器之间可通过IP.Docker DNS Server或joined三种方式进行通信,今天我们来详细学习一下. 一.IP通信 IP通信很简单,前一篇中已经有所涉及了,只要容器使用相同网络,那么就可以使 ...

  8. Docker 与 K8S学习笔记(五)—— 容器的操作(下篇)

    上一篇我们学习了容器的启动和常用的进入容器的方式,今天我们来看看如何控制容器起停以及容器删除操作. 一.stop.kill.start和restart stop.kill命令都可以停止运行的容器,二者 ...

  9. Docker 与 K8S学习笔记(二十二)—— 高效使用kubectl的小技巧

    kubectl作为我们主要的操作K8S的工具,其具备非常丰富的功能,但是如果不经过打磨,使用起来还是存在诸多不便,今天我们来看看如何将我们的kubectl打磨的更加易用. 一.命令自动补全 kubec ...

随机推荐

  1. windows Notepad++ 上配置 vs 编译器 , 编译并运行

    windows 中 配置 vs编译器 在Linux下,Kris是倾向于在终端中使用gcc和g++来编译C/C++的,在Windows下相信很多人都是选择臃肿的Visual Studio,我亦不免如此. ...

  2. Codeforces Round #754 (Div. 2) C. Dominant Character

    题目:Problem - C - Codeforces 如代码,一共有七种情况,注意不要漏掉  "accabba"  , "abbacca"  两种情况: 使用 ...

  3. JAVA中的六种日期类型使用

    基本的6种日期类 /** * 六种时间类型的类 * 数据库格式的时间三种格式 */ java.util.Date date = new java.util.Date();//年与日时分秒 //数据库的 ...

  4. Postman 中 Pre-request Script 常用 js 脚本

    1. 生成一个MD5或SHA1加密的字符串str_md5,str_sha1 string1 = "123456"; var str_md5= CryptoJS.MD5(string ...

  5. linux安装redis报错

    问题:You need tcl 8.5 or newer in order to run the Redis test 解决办法: wget http://downloads.sourceforge. ...

  6. 【编程思想】【设计模式】【测量模式Testability】Setter_injection

    Python版 https://github.com/faif/python-patterns/blob/master/dft/setter_injection.py #!/usr/bin/pytho ...

  7. java标识接口

    标识接口是没有任何方法和属性的接口,标识接口不对实现类有任何语义上的要求,仅仅表明它的实现类属于一个特定的类型.它非常类似于Web 2.0中的TAG的概念,Java使用它标识某一类对象.主要有两个用途 ...

  8. Linux运维实战之磁盘分区、格式化及挂载(一)

    在网络系统中,磁盘和文件系统管理是两个非常基本.同时也是非常重要的管理任务,特别是文件系统管理,因为它与用户权限和整个网络系统的安全息息相关.本次博文的主题是关于Linux系统中磁盘分区.格式化及挂载 ...

  9. Oracle 用户自定义数据类型

    用户自定义数据类型(User-defined Data Type)oracle支持对象类型(Object Type).嵌套类型(Nested Table Type)和可变数组类型(Varray Dat ...

  10. 阿里云esc 登录时的相关提示

    1. 如果该ecs 未绑定密钥对,可以通过常规的用户名密码登录 2. 如果该 ecs 绑定了密钥对,则需要通过私钥进行登录 3. 如果使用 比如 securityCRT 登录时报 " A p ...