docker原理详解

一、docker简介

  docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。docker容器和虚拟机都有虚拟隔离的特性,所以一般都会拿虚拟机和docker容器作比较。

二、docker解决了什么

  软件的安装和部署是比较麻烦的,不同的环境可能导致软件无法正常运行,例如linux系统传统常用安装软件的方式有三种:源码、rpm包、yum包。这三种方式中yum安装方式最简单了,但yum安装的版本一般比较低,可能需要升级从而导致操作繁琐甚至环境不一致等问题。docker解决了部署简单、环境不一致、资源利用率高等问题。

  1. 容器化:把代码、配置文件和它所依赖的环境整合打包成,使用容器运行,解决了部署繁琐和环境不一致问题。
  2. 资源利用率:容器相对于虚拟机来说效率高,容器是共享宿主机内核、cpu、内存、磁盘的,而虚拟机是独占这些资源的。效率利用率从高到底依次为:传统软件安装>容器>虚拟机
  3. 安全性:相对于传统软件的安装方式安全性高,容器运行的方式是进程级别的隔离,所以运行的环境和传统软件方式相比是不受影响的,但没有虚拟机安全级别高,虚拟机是系统级别的隔离。安全级别从高到低依次为:虚拟机>容器>传统软件安装

扩展:

  • 源码安装:编译麻烦,而且还需要先安装各种依赖软件
  • rpm包安装:rpm包是别人编译安装好的二进制包,和windows下的exe安装文件一样。也需要先安装各种依赖软件
  • yum安装:解决了依赖关系,但yum安装方式依赖yum源文件且人为无法干预,不能按需安装,安装的版本也比较低。

三、docker架构

docker使用c/s架构,即客户端/服务器架构。

  • docker客户端:docker客户端只是命令行工具,使用诸如docker run之类的命令时,客户端会将这些命令通过Docker API发送到dockerd(dockerd就是docker daemon)来执行这些命令。docker客户端可以与多个docker daemon通信。
  • docker守护程序(docker daemon):dockerd 就是docker daemon,类似server。侦听Docker API请求,管理Docker对象,实际的docker run之类的命名是在docker daemon里执行的。守护程序还可以与其它守护程序通信以管理docker服务。
    在这里插入图片描述

四、docker基本概念

  • 镜像仓库(repository):存放镜像的地方,仓库分为公(Docker Hub)有仓和私有仓(阿里云的私有仓或自己通过registry和harbor来搭建的)
  • 镜像(image):镜像好比一个模板,通过这个模板创建容器
  • 容器(container):镜像通过run命令运行起来后就会产生容器,每个容器都是Linux的一个进程,也可以把容器看成是一个独立的Linux系统

五、docker镜像分层机制

  几乎所有镜像都是通过一个底层镜像(base image)构建而来,这个底层镜像就是引导文件系统(bootfs),bootfs主要包涵引导加载器(bootloader)和内核(kernel),可以简单理解这个底层镜像就是一个简易版的linux系统。容器和镜像的最主要区别就是容器加上了一个顶层,最顶层为读写层,除顶层外其他的都是读层。每一层都包括了一个指向父层的指针。如果一个层没有这个指针,说明它处于最底层。dockerfile由多条指令构成,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层/var/lib/docker/containers/<id>目录下可以找到容器顶层,<id>就是一个可读层的id。这个目录下的文件大多是运行时的数据,比如说网络,日志等等。
在这里插入图片描述

六、为什么docker的centos镜像很小,只有200M多一点

  因为docker镜像只有rootfs和其他镜像层,共用宿主机的bootfs,各个版本的Linux系统bootfs是一样的,不同系统rootfs不一样。容器当引导加载器(bootloader)将内核加载到内存中后,会把临时创建的bootfs这个文件系统删掉,此时系统自检后会将rootfs只读改为读写,可以理解rootfs是一个包含了一般系统上的常见目录结构,类似于/dev, /proc, /bin等等以及一些基本的文件和命令。镜像中的rootfs比较简单,所以进入容器时一些linux命令也就没有。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值