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

16 篇文章 0 订阅
5 篇文章 0 订阅
本文介绍了Docker的基本概念,如镜像和容器,以及它如何解决复杂项目环境的兼容性和一致性问题。Docker通过打包应用及其依赖到镜像中,实现了跨平台的高效运行。对比虚拟机,Docker更轻量级,启动快速。文章还概述了Docker的客户端-服务端架构,并提及了在CentOS7环境下安装Docker可能遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

近几年 Docker 还是挺火的, 学习微服务也肯定要知道 Docker 的存在并最好掌握一些基本操作, 毕竟一些体量非常大的项目运行环境会比较复杂, 部署的时候难免会遇到某些问题, 如兼容性 / 生产环境有差异等问题… 本篇文章将以图文的形式对 Docker 进行介绍, 加深对 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 指令, 管理镜像和容器等; 也就是说客户端主要用来发送指令, 而服务端则是来管理这些镜像和容器.
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值