版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/48212081

Docker认识基础

作者:chszs,版权所有,未经同意,不得转载。博主主页:http://blog.csdn.net/chszs

一、Docker介绍

Docker是一个C/S架构的容器引擎,它包括镜像、容器和库这三个重要的概念。
Docker是一个开源平台,它包含容器引擎和Docker Hub注册服务器。

1)Docker容器引擎
此引擎可以让开发者打包自己的应用和依赖包到一个可移植的容器中,然后将其发布到任何流行的Linux机器上。

2)Docker Hub注册服务器
用户可以在该服务器上创建自己的镜像库来存储、管理和分享镜像。利用Docker,可以实现软件的一次配置、到处运行。
Docker是PaaS提供商dotCloud公司(后改名为Docker)开源的、基于LXC的高级容器引擎,源码托管于GitHub,基于GoLang开发,以Apache 2.0许可证发布。

Docker的特性:

1)统一的打包格式
Docker定义了一种统一标准的打包格式,可将应用及其依赖打包到单个的镜像。

2)交互式Shell
Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。

3)版本控制
Docker的版本控制类似于Git,Docker可以跟踪一个容器的版本信息,查看版本差异,提交或回滚版本等。

4)组件复用
Docker容器以组件的方式搭建,可以利用一个基础镜像构建更多的应用容器。

5)共享镜像
Docker用于一个公共的注册服务器,无数的开发者上传了他们的镜像,这些镜像包罗万象,基本上各种应用领域、应用场景都可以找到相应的镜像。

6)内容的隔离
文件系统隔离:每个进程容器运行在完全独立的根文件系统里;
资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源;
网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。

7)日志记录
Docker将会收集和记录每个进程容器的标准流,用于实时检索或批量检索。

8)写时复制
Docker采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间.

二、容器vs.虚拟机

Docker是容器的一种,容器是一种轻量级的虚拟技术,重量级的虚拟技术就是虚拟机。
虚拟机是一种基于硬件的虚拟技术,它采用指令集的虚拟,完全虚拟一整套物理主机,包含CPU、内存、磁盘、网卡等硬件设备,呈现给用户的是一个物理机的特性。
用户可以在一台主机上安装多个虚拟机,每一个虚拟机实例都包含了完整的硬件虚拟层、OS、公共库等。
容器是一种基于操作系统的虚拟技术,它运行于操作系统之上的用户空间,所有的容器都共用一个系统内核,甚至是公共库。容器引擎提供了进程级的隔离,让每个容器都像是运行在单独的系统之上,但又能共享很多底层的资源。
与虚拟机相比,容器更为轻量级、更快速、更易于管理、资源占用更小。
除了Docker,场景的容器还有Solaris Zones、BSD jails、OpenVZ和LXC等。

三、Docker的应用场景

下面列举一些Docker典型的应用场景。
1)加速本地开发
2)自动打包和部署应用
3)创建轻量级、私有的PaaS环境
4)自动化测试和持续集成/部署
5)部署并扩展Web应用、数据库和后端服务器
6)创建安全沙盒
7)轻量级的桌面虚拟化

四、Docker的组件

Docker采用C/S架构开发,整体架构如图所示:

包括:

1)Docker客户端
即Docker的可执行程序,它可以通过命令行和API的形式与Docker的守护进程进行通信。

2)Docker守护进程
Docker守护进程提供Docker服务。

五、Docker三大核心组件

Docker有三大核心组件:镜像、容器和库

1)镜像
镜像是一个只读的静态模板,保存了容器需要的环境和应用的执行代码。镜像采用分层机制,每个镜像都是只读的,但可以将写数据的层通过联合文件系统附加到原有的镜像上。这样镜像就很易于存储、传输和更新。

2)容器
容器是一个运行时环境,是镜像的运行状态,是镜像执行的动态表现。容器提供了应用的统一的运行方式:创建、开始、停止、重启、销毁。

3)库
Docker采用注册服务器来存储和共享用户的镜像,库是某个特定用户存储镜像的目录。通常一个用户可以建立多个库来保存自己的镜像。库是注册服务器的一部分,注册服务器分公有的和私有的,公有的如Docker官方提供的Docker Hub。

六、Docker的度量

Docker是利用容器来实现的一种轻量级的虚拟技术,从而在保证隔离性的同时达到节省资源的目的。Docker的可移植性可以让它一次建立,到处运行。Docker的度量可以从以下四个方面进行:

1)隔离性
Docker采用libcontainer作为默认容器,代替了以前的LXC。libcontainer的隔离性主要是通过内核的命名空间来实现的,有pid、net、ipc、mnt、uts命令空间,将容器的进程、网络、消息、文件系统和主机名进行隔离。

2)可度量性
Docker主要通过cgroups控制组来控制资源的度量和分配。

3)移植性
Docker利用AUFS来实现对容器的快速更新。
AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统,支持对每个目录的读写权限管理。AUFS具有层的概念,每一次修改都是在已有的只写层进行增量修改,修改的内容将形成新的文件层,不影响原有的层。

4)安全性
安全性可以分为容器内部之间的安全性;容器与托管主机之间的安全性。
容器内部之间的安全性主要是通过命名空间和cgroups来保证的。
容器与托管主机之间的安全性主要是通过内核能力机制的控制,可以防止Docker非法入侵托管主机。

Docker容器使用AUFS作为文件系统,有如下优势:

1)节省存储空间
多个容器可以共享同一个基础镜像存储。

2)快速部署
如果部署多个来自同一个基础镜像的容器时,可以避免多次复制操作。

3)升级方便
升级一个基础镜像即可影响到所有基于它的容器。

4)增量修改
可以在不改变基础镜像的同时修改其目录的文件,所有的更高都发生在最上层的写操作层,增加了基础镜像的可共享内容。

Docker认识基础相关推荐

  1. Docker | Docker技术基础梳理(五) - Docker网络管理

    Docker | Docker技术基础梳理(五) - Docker网络管理 链接: 原文链接 原文链接: https://gitbook.cn/books/5b8f3c471966b44b00d265 ...

  2. docker多个容器一起打包_详解Docker 容器基础系统镜像打包

    因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具.根据这个思路,我们就可以构建一个自己的容器基础系统镜像. 构建标准的 Li ...

  3. Docker应用基础

    Docker应用基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 每日一想: 互联网有这么典型的一句话:一般来讲,懂得越少的人越有自信,而懂得越多的人他越谦虚,这是由于每个人认知 ...

  4. docker 启动容器的时候没-p 后面怎么加-p_基于Docker搭建基础自动化部署

           阅读本文约需要7分钟  大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了下SpringBoot如何实现全链路调用 ...

  5. Docker镜像基础命令

    Docker镜像基础命令 给root用户设置密码 Sudo -s à passwd root à su 更新apt的镜像源地址:阿里云 https://opsx.alibaba.com/mirror ...

  6. 【Docker】基于CentOS 8:Docker使用基础

    文章目录 一.Docker的组成 1.1 镜像 1.2 容器 1.3 仓库 二.Docker安装 2.1 CentOS 6 安装 2.2 CentOS 7 安装 2.4 CentOS 8 安装 2.3 ...

  7. docker入门基础(一)

    目录 一.简介 1.docker架构 2.docker的概念 二.docker的安装和管理 1.docker安装 2.docker配置阿里云镜像加速 3.基础命令 一.简介 参考 https://ww ...

  8. docker镜像简介和docker常用基础命令

    docker镜像简介和docker常用基础命令 文章目录 docker镜像简介和docker常用基础命令 1:docker镜像概述 1.1:什么是docker镜像 1.2:docker镜像的获取方式 ...

  9. docker的基础使用

    目录 什么是Docker 为什么要用Docker 更快速的交付和部署 更高效的虚拟化 更轻松的迁移和扩展 更简单的管理 对比传统虚拟机总结 Docker的基本概念 Docker镜像 Docker容器的 ...

最新文章

  1. Grafana 6.1.3 发布,系统指标监控与分析平台
  2. 【ArcGIS Pro微课1000例】0001:Win7系统ArcGIS Pro2.5安装权威教程(附软件安装包下载)
  3. 如果科学家封神,会有什么称号?
  4. NXOpen.BlockStyler的一些用法
  5. mysql 中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用
  6. BP神经网络公式推导
  7. STM32F1开发指南笔记20----数码管驱动芯片TM1640解析
  8. 基于巴法云平台的天猫精灵控制开关
  9. php getdigest,http digest
  10. 安卓miracast花屏_EMUI 10.1 Cast+无线投屏 让你开启“0”花屏新体验
  11. android manifest相关属性
  12. php 判断是否汉字
  13. linux修改时间写入cmos,解析Linux操作系统修改时间
  14. 达梦同步工具dmhs同步kafka配置
  15. java8 合并两个list日期相同为一条
  16. 文艺范儿的程序猿和攻城狮们
  17. CDH部署完成后启动失败的解决方案
  18. kaggle gradient_descent
  19. 擎天架构加持,华为云Stack打算在混合云市场怎么打?
  20. vue3写个超级简单的音乐网站,保姆级教程

热门文章

  1. 双层玻璃窗的功效模型matlab,数学建模:双层玻璃窗的功效,80人%的人搞不懂数学的应用价值...
  2. QT自定义MainWindow
  3. msyql 禁止远程访问
  4. 微型计算机主存可以分为,计算机基础试题 (含答案)
  5. koa2 mysql 中间件_Koa2第二篇:中间件
  6. 命令行进入指定目录_VIM学习笔记 操作目录(Manipulate Directory)
  7. 私人博客定制----封装数据库接口
  8. Honeycomb——BFS
  9. 【C++学习之路】第一章——C++核心方法总论
  10. 530. 二叉搜索树的最小绝对差