SpringCloud系列(八)[docker 篇] - 关于 Docker 的一些介绍及架构

news2025/2/26 3:53:04

近几年 Docker 还是挺火的, 学习微服务也肯定要知道 Docker 的存在并最好掌握一些基本操作, 毕竟一些体量非常大的项目运行环境会比较复杂, 部署的时候难免会遇到某些问题, 如兼容性 / 生产环境有差异等问题… 本篇文章将以图文的形式对 Docker 进行介绍, 加深对 Docker 的印象.

Docker

  • 1 Docker 介绍
    • 1.1 Docker 是什么?
    • 1.2 要解决的问题及如何解决这些问题?
    • 1.3 Docker 和虚拟机?
  • 2 Docker 的架构

1 Docker 介绍

Docker 是什么? 主要用来解决哪些问题? 如何解决这些问题? 它和我们经常使用的虚拟机又有什么区别? 它是如何架构的?

1.1 Docker 是什么?

Docker 是一种能够快速交付应用并高效运行应用的技术, 它可以将程序 / 依赖 / 运行环境一起打包成一个镜像(image), 并能够迁移到任意的 Linux 操作系统; 它可以利用沙箱机制(沙箱就是一个限制应用程序对系统资源的访问的运行环境)形成隔离容器, 使得各个应用互不干扰; 它可以通过一些命令完成容器的启动或者移除等操作, 非常的方便快捷.

1.2 要解决的问题及如何解决这些问题?

  前面也说过, 一些体量比较大的项目可能运行环境比较复杂, 部署的时候会遇到诸如依赖关系复杂导致的兼容性问题, 或者是开发环境 / 生产环境 / 测试环境有很大的差异. 如下图所示非常的杂乱无章!!!
在这里插入图片描述

解决办法:
为了解决依赖关系的兼容性问题, Docker 将应用的函数库 / 依赖以及相关的应用一起打包, 将每个包放到一个隔离的容器中去运行, 这样就避免了互相干扰导致的兼容性问题, 如下图所示:
在这里插入图片描述
那么对于不同系统环境的问题 Docker 又是如何解决的呢?
Docker 将用户程序所需要调用的系统函数库一起打包, 如将 Centos 7 函数库一起打包(Centos 和 Ubuntu 都是基于 linux 内核, 只是系统应用不同, 所提供的函数库不同而已), 运行到不同的操作系统时, 直接基于打包的库函数, 借助于操作系统的 linux 内核来运行, 如下图所示:
在这里插入图片描述

总结如下:
问题一: Docker 解决项目依赖关系复杂问题及不同组件依赖的兼容性问题;

  • Docker 允许开发中将应用 / 依赖 / 函数库 / 配置一起打包, 形成可移植的镜像(image);
  • Docker 应用运行在容器中, 使用沙箱机制进行相互隔离.

问题二: Dokcer 解决开发 / 测试 / 生产环境有差异的问题;

  • Docker 镜像中包含了完整的运行环境, 仅仅依赖系统的 Linux 内核, 这样便可以在任意的 Linux 操作系统上运行.

1.3 Docker 和虚拟机?

虚拟机是在操作系统中模拟出一个硬件环境, 然后运行在另一个系统中, 如我在我的 mac 系统中运行 Centos 7 系统; 而 Docker 则是将某个应用所需要的依赖 / 库函数及需要调用的系统函数库全部打包成一个镜像, 运行到不同的操作系统中(基于打包的库函数, 借助于操作系统的 linux 内核来运行);
总之, Docker 是一个系统进程, 而虚拟机则是在操作系统中的操作系统; Docker 体量比较小, 启动速度快, 性能好; 而虚拟机体量比较大, 性能一般, 启动速度也比较慢.
在这里插入图片描述

2 Docker 的架构

  在了解 Docker 架构之前, 先要明确两个概念: 镜像和容器;

  • 镜像(Image): Docker 将应用程序及其所需的依赖 / 函数库 / 环境等配置文件打包在一起, 形成一个镜像;
  • 容器(Container): 镜像中的应用程序运行后形成的进程就是容器, 只是 Docker 会给容器做隔离, 对外不可见.
    下面就是我的 linux 中已经装好的镜像及已经形成的容器:
    在这里插入图片描述
    关于 Docker 的架构:
      Docker 是一个 CS 架构的程序, 也就是客户端 - 服务端架构:
  • 客户端: 通过命令或者是 RestAPI 向 Docker 服务端发送指令, 可以在本地或远程向服务端发送指令;
  • 服务端: Docker 守护进程, 负责处理 Docker 指令, 管理镜像和容器等; 也就是说客户端主要用来发送指令, 而服务端则是来管理这些镜像和容器.
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/156009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

S2B2b2C电商框架图

S2B2b2C电商框架图 以下是S2B2b2C系统的结构图和流程说明: 它是品牌商赋能门店流量,以用户为中心、提升用户体验的一种电商模式。 这个品牌商可以是工厂、连锁品牌、省代市代等商贸流通型企业,它可以一个或者多个仓库,甚至有自己…

文件恢复软件哪个最好用?5 款最佳照片文件恢复软件

丢失照片很常见,但恢复它们取决于您选择的方法或软件。找到最好的照片恢复软件来恢复永久删除的照片并不容易。在许多网页上,您可以找到一大堆照片恢复工具,无论它们的性能如何。这可能会造成很多混乱,不知道优先使用什么照片恢复…

Linux操作系统之线程创建

文章目录一、了解线程二、线程的创建一、了解线程 什么是线程? 线程是进程内部的一条执行路径或执行序列 二、线程的创建 pthread_creat() //创建线程 pthread_exit() //只退出当前线程 pthread_join() //等待线程结束/合并线程 第一类题目:1、首先…

Python玩人工智能:你的俯卧撑做对了吗?

1. 准备工作 1.1 安装Python3.8.x 1.2 安装PyCharm社区版 1.3 创建项目 1.4 安装项目使用工具包 1.1 下载安装Python3.8.x版本 首先我们的电脑上要安装Python3.8.x。Python 3.8.x : https://www.python.org/downlo... 1.2 下载安装PyCharm社区版 PyCharm: https://www.j…

远程办公与Web3内核高度匹配 将重塑全球劳动力市场格局?

在过去两年半的时间里,全球有45%的工作转为了远程办公模式,不过即使疫情好转,大城市的办公室入驻率仍低于疫情前50%的水平。 这表明,现在越来越多的人更喜欢远程工作的生活方式。“远程办公”从疫情期间的无奈选择,正在…

java基于ssm框架的企业人事管理系统企业工资考勤系统

简介 Java基于ssm开发的企业人事考勤工资系统,员工可以打卡、请假。系统根据员工的打卡情况自动计算工资(全勤、请假、旷工、加班、迟到、早退等计算出最终实发工资),员工还可以查看自己的考勤记录工资具体组成等。升级版加了部长…

jedis是什么,为什么是线程不安全的

常用的操作redis的客户端工具 jedis Jedis 是 Redis 官方推荐的 Java 连接开发工具,jedis非线程安全。 但是可以通过JedisPool连接池去管理实例,在多线程情况下让每个线程有自己独立的jedis实例,可变为线程安全。 Lettuce Lettuce 是基于…

嵌入式实时操作系统的设计与开发(七)

内存管理机制 内存管理就是把物理的存储资源用一定的规则和手段管理起来,以供给操作系统和应用程序使用。 主要的操作:内存的分配和内存的回收。 内存的利用率、分配回收的效率和稳定性成为了评价内存管理模块的主要依据。 内存分配又包括静态和动态两种…

Pinely Round 1 (Div. 1 + Div. 2) A. Two Permutations

来写一道*800的题,思路很简单,就是这道题我们应该怎么去严谨地思考Problem - 1761A - Codeforces思路:结论题的分类讨论一定要不重不漏一开始很容易想到,前缀和后缀不能有重合那么有重合部分就判No没有重合的情况:隔1个…

Linux常用命令——xz命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) xz POSIX 平台开发具有高压缩率的工具。 补充说明 xz命令XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩…

多线程进阶(二)Callable接口,JUC下常见类使用及线程安全集合类

目录 前言: Callable接口 代码实现 JUC下常见类使用 ReentrantLock类 代码实现 信号量 代码实现 CountDownLatch类 代码实现 线程安全的集合类 多线程环境下使用ArrayList 多线程环境下使用队列 多线程环境下使用哈希表 小结: 前言&#…

图解24种经典k线图

相信不少国内的老股民心中都藏着一份经典的K线图图解,当中也许有6种、12种或24种能揭示行情方向转变的“K线脸谱”,借由它们的对行情的预知作用,股民度过一次又一次的熊牛更替。其实只要善于变通,它们同样适用于贵金属投资&#x…

再说多线程(一)

世界是并行!做过复杂项目的朋友一定遇到过并发的问题,无论是大项目如订票系统,还是小项目中的文件管理都会有并行需求。所以不同于上学时接触的大部分代码,实际的业务往往是为多人提供服务,必然天然的带有并发的需求。…

Mybatis-plus 使用 typeHandler 将 String 拼接字符串转换为 List 列表

一、需求描述 首先说明需求,有三张表: 学生表、角色表、以及一张关联的中间表。 学生可以有多个角色,但是这多个角色我是作为多条记录存储在另外一张表中的,现在想将这多条记录查询出来,注入到Student对象中的一个L…

微服务之JVM调优

一、Xms Xmx Xss等定义及功能 1.Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢。 2.Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异…

易基因|14种全基因组DNA甲基化测序(WGBS)标准分析比对软件的比较| 生信专区

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。全基因组重亚硫酸盐测序(WGBS)是甲基化研究的重要技术。尽管已经开发了一系列工具来解决由亚硫酸盐处理引起的比对问题,但尚未对最新可用工具的reads比对…

HashMap,Hashtable,ConcurrentHashMap

目录 一、多线程使用HashMap的一些线程安全问题 ①造成数据新增丢失 ②扩容时候,造成链表成环 二、Hashtable和HashMap的区别 ①核心方法加锁 ②其他语法上面的略微差异 三、引入ConcurrentHashMap【重要】 ①ConcurrentHashMap相比于Hashtable的优势 Hashtab…

著名相声艺术家侯耀华,77岁寿宴现场曝光,郭德纲师哥前去祝贺

在中国的相声界,有一条不成文的规定,关于著名相声表演艺术家的判定,从来不是以相声水平高低为标准。只要你有足够长的寿命,只要你能把其他人都熬走熬败,就算你是一个相声小白,也能摇身一变成为艺术家。 不过…

Git介绍与使用

1.集中式版本控制 svn 中央服务器 所有的版本数据都存在服务器上,用户本地只有自己所同步的版本,如果不联网的话,用户就看不到 SVN是集中式版本控制系统,版本库是集中放在中央服务器的 而工作的时候,用的都是自己的电脑,所以首先…

跨境电商物流系统功能框架

随着国内互联网巨头们逐渐将更多注意力投向了跨境电商市场,电商巨头出海也在掀起新的发展高潮。下面是跨境电商物流系统功能框架,供大家参考1、OMS叫做订单管理系统(Order Management System),在不同公司,不…