ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

全面的Docker 系统性入门+进阶实践(2021最新版)MK

2022-02-09 00:02:52  阅读:354  来源: 互联网

标签:容器 虚拟化 文件系统 MK 2021 进程 镜像 Docker 最新版


Download:百度网盘

提取码:45on

一、Docker概述

Docker是什么?我们看下官方是怎么定义的。

Docker 是一个开源的 应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个 可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现 虚拟化

下文会对这些关键词做讲解。

1.1 什么是容器?

容器技术是一种虚拟化的方案。容器虚拟化也就是操作系统级别的虚拟化,只能运行相同或相似内核的操作系统。Docker使用的容器技术依赖于Linux内核的NamespacesCgroups,这两个技术就是为了让操作系统资源被区隔成独立区间

Docker能够将开发的应用程序自动部署到容器。

前面提到,Docker依赖的Linux内核特性

  • Namespaces 命名空间
  • Controller groups(cgroups)控制组

NameSpace

为确保提供的是轻量级虚拟化服务,Docker使用了NameSpace。命名空间提供了系统资源的隔离,资源包括进程、网络、文件系统等。

在同一个Namespace下的进程可以感知彼此的变化,而对其他的Namespace一无所知。让容器置身于独立的系统环境中。

Namespace的种类 :

  • PID(Process ID) 进程隔离
  • NET(Network) 管理网络接口
  • IPC(InterProcess Communication) 管理跨进程通信的访问
  • MNT(Mount) 管理挂载点
  • UTS(Unix Timesharing System) 隔离内核和版本标识

Controller groups

是一种Linux提供用于限制,控制,管理资源的机制。

cgroups的功能:

  • 资源限制:子系统可为进程组设置资源使用上限。
  • 优先级设定:哪些进程组使用更多的资源。
  • 资源计量:计算进程组都使用了多少的系统资源。
  • 资源控制:能够将进程组挂起和恢复。

1.2 虚拟化技术

虚拟化技术就是一种计算机资源管理技术,将内存,网络,CPU等资源进行抽象,让硬件透明,目的是让用户合理地使用操作系统资源。

1.3 虚拟机与容器的区别

图片来源于Docker官网

相比于轻量级的容器,虚拟机会让原本只需要几十兆的应用却要动用几个G的庞然大物(操作系统)去支持。虚拟机需要模拟硬件的行为,会占用更多的资源。因为容器虚拟化了操作系统而不是硬件,导致便携性效率更高。

1.4 Docker的目标

  • 提供简单轻量的建模方式
    只需几分钟就能将容器docker化,启动非常快。同一台宿主机中可以运行好多容器,更加充分合理地利用资源。
  • 职责的逻辑分离
    开发只关注容器中应用程序的运行,运维管理容器。通过保证开发唤醒与部署环境的一致性来实现的。
  • 快速高效的开发声明周期
    缩短代码从开发,测试,部署的周期。在容器中开发,以容器的形式交付和分发,避免额外的调试部署的开销。
  • 鼓励使用面向服务(微服务)的架构
    推荐单个容器只运行一个程序或进程,形成分布式的应用程序模型,利用单一任务,实现高内聚低耦合。

1.5 Docker的使用场景

  1. 需要开发、测试、部署服务等环境一致
  2. 创建隔离的运行环境。
  3. 搭建测试环境。
  4. 构建多用户的平台即服务(PaaS)基础设施。
  5. 提供软件即服务(SaaS)应用程序。
  6. 高性能、超大规模的宿主机部署。

二、Docker的基本组成

首先从整体出发,观察docker的架构。

图片来源于网络

不难发现,docker由内到外是docker daemon(守护进程),docker client(客户端),container(容器),image(镜像),network(网络),data volumes(数据卷)。下面章节也会按照这些点进行各个突破。

Docker的基本组成有:

  • Docker Client 客户端
  • Docker Daemon 守护进程
  • Docker Image 镜像
  • Docker Container 容器
  • Docker Registry 仓库

2.1 Docker Client 客户端 & Docker Daemon 守护进程

基于C/S架构,简单来说,就是Docker客户端向守护进程发送请求,守护进程处理后会返回结果。Docker的C/S架构在下一篇文章会详细介绍。

2.2 Docker Image镜像

镜像是容器的基石,容器基于镜像启动和运行。镜像保存的容器启动的各种条件。Docker Image是一个层叠的只读文件系统

如上图所示,容器启动时,从下而上加载需要的镜像,镜像被依次移到内存中,最后,bootfs(引导文件系统)会被卸载

在Docker中,rootfs(root文件系统)永远只读,利用联合加载技术,在root文件系统的基础上加载更多的只读文件系统。将这样的文件系统称之为镜像,对,没错,镜像就是一堆文件系统的集合

注:联合加载技术是一次加载多个文件系统,但是在外面看来好像只有一个文件系统。最终将各层文件叠加到一起,最终的文件系统包含所有的底层文件和目录。

一个镜像可以放到另一个镜像的顶部,称为下一个镜像的父镜像。最底部的镜像称为基础镜像

标签:容器,虚拟化,文件系统,MK,2021,进程,镜像,Docker,最新版
来源: https://blog.csdn.net/m0_65775351/article/details/122833546

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有