浅谈对Docker的个人理解

以下内容为初学 Docker 的一些疑惑以及查找问题的记录整理及个人想法,或许有不对的地方仅供参考!!!

参考网站链接放下边啦!

# 狂神说视频(学习要一键三连哦!)
https://www.bilibili.com/video/BV1og4y1q7M4?p=18&spm_id_from=pageDriver
# 博客链接
https://www.cnblogs.com/kex1n/p/6933039.html
https://blog.csdn.net/qq_37979178/article/details/85482337

Docker为什么存在

虚拟机讲到了通过多个虚拟机实现应用环境的隔离,但如果你用过VMware你就会知道(大学学习RedHat的时候用过)虚拟机是一个什么概念,他就是一个待安装应用的操作系统,而且会占用宿主机的大量内存和资源。回过来想想,我们的目的是实现应用的隔离,这样会不会有点小题大作了,一个应用对应一台启动缓慢的虚拟电脑?我们面向的是应用,而不是机器。这样Docker应运而生。

Docker是一个容器引擎,他可以为所有的微服务应用提供运行时的环境,他的沙箱机制类似JVM的跨平台原理,还有类似Git的Pull,Push机制,通过Docker你可以为自己的应用提供一个高度内聚,粒度足够细小的应用运行环境,而这一切都在Docker Registry远端仓库中,你要做的就是敲几行类似node.js环境下npm命令,这些命令就像是maven,gradle中的坐标定位一样会从Docker Registry公有仓库中自动为你进行下载安装。以下就是虚拟机和容器技术的实力对比:

在这里插入图片描述

Docker和虚拟机的区别

讲完 Docker 为什么存在,或许就想知道 Docker 与虚拟机的区别,接下来就让我们来了解一下吧!

想比较好理解,最好不要把你自身的机子操作系统为Windows,反正我当时理解脑回路有点乱了 ,直接操作系统理解为Linux 比较好理解!

理解虚拟机

使用虚拟机运行多个相互隔离的应用时,如下图:

图0:[外文翻译]虚拟机与Docker有何不同?·

从下到上理解上图:
  • 基础设施(Infrastructure)。它可以是你的个人电脑,数据中心的服务器,或者是云主机。
  • 主操作系统(Host Operating System)。你的个人电脑之上,运行的可能是MacOS,Windows或者某个Linux发行版。
  • 虚拟机管理系统(Hypervisor)。利用Hypervisor,可以在主操作系统之上运行多个不同的从操作系统。类型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V以及支持Linux的KVM。类型2的Hypervisor有VirtualBox和VMWare。
  • 从操作系统(Guest Operating System)。假设你需要运行3个相互隔离的应用,则需要使用Hypervisor启动3个从操作系统,也就是3个虚拟机。这些虚拟机都非常大,也许有700MB,这就意味着它们将占用2.1GB的磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存。
  • 各种依赖。每一个从操作系统都需要安装许多依赖。如果你的的应用需要连接PostgreSQL的话,则需要安装libpq-dev;如果你使用Ruby的话,应该需要安装gems;如果使用其他编程语言,比如Python或者Node.js,都会需要安装对应的依赖库。
  • 应用。安装依赖之后,就可以在各个从操作系统分别运行应用了,这样各个应用就是相互隔离的。

理解Docker容器

使用Docker容器运行多个相互隔离的应用时,如下图:

图1:[外文翻译]虚拟机与Docker有何不同?·

不难发现,相比于虚拟机,Docker要简洁很多。因为我们不需要运行一个臃肿的从操作系统了。

从下到上理解上图:
  • 基础设施(Infrastructure)。
  • 主操作系统(Host Operating System)。所有主流的Linux发行版都可以运行Docker。对于MacOS和Windows,也有一些办法”运行”Docker。
  • Docker守护进程(Docker Daemon)。Docker守护进程取代了Hypervisor,它是运行在操作系统之上的后台进程,负责管理Docker容器。
  • 各种依赖。对于Docker,应用的所有依赖都打包在Docker镜像中,Docker容器是基于Docker镜像创建的。
  • 应用。应用的源代码与它的依赖都打包在Docker镜像中,不同的应用需要不同的Docker镜像。不同的应用运行在不同的Docker容器中,它们是相互隔离的。

Docker基本组成

结合一下两张图比较好理解!(两张图内容基本一致,只是中英文区别)

image-20200514195805400
在这里插入图片描述

看完上面内容,我们最好还是要了解一些名词先!

  • 物理真机:宿主机(说白了可以是个人电脑不在以上图内,不要吧宿主机理解成客户端!)

  • 虚拟机:客户机(Guest),一般为虚拟机!

Docker基本组成

  1. Docker客户端

  2. Docker主机

  • 镜像(image):
    docker镜像就好比是一个目标,可以通过这个目标来创建容器服务,tomcat镜像容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

  • 容器(container):

    Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的

    启动,停止,删除,基本命令

    目前就可以把这个容器理解为就是一个简易的 Linux系统。

  1. 仓库(repository):

    仓库就是存放镜像的地方!

    仓库分为公有仓库和私有仓库。(很类似git)

    Docker Hub是国外的。

    阿里云…都有容器服务器(配置镜像加速!)

Docker运行流程

在这里插入图片描述

了解完上面内容然后可以了解一下这幅图,本人粗糙的理解,所谓的 Docker客户端应该就是 Linux命令行窗口!

然后我们再回看一下这张图红色部分!圈起来的就是一些基本命令!在这里就不说啦,想知道的可以去找具体视频学习!

在这里插入图片描述

执行个 docker run hello-wolrd 玩玩!

在这里插入图片描述

流程图:帮助理解一下!一定要结合上3张图理解!!!

下载完只是下载了镜像而已!容器还得通过下载的镜像创建!具体命令可以找视频学习!

流程图:帮助理解一下!一定要结合上3张图理解!!!

在这里插入图片描述

下载完只是下载了镜像而已!容器还得通过下载的镜像创建!具体命令可以找视频学习!

以上就是个人理解的部分啦,如果有所错误,还希望大佬加以纠正!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值