docke理论篇 --docker的基本概念

前言:

    补充一下 docker 的理论部分,对容器有一个深入的了解。首先先看一个我们很常见的东西--云,例如:阿里云,腾讯云。他们提供给我们空间使用,让我们在本地远程云端的服务变得十分便捷。但是,按照以前我们在本地上用虚拟机可以实现一台电脑开多个操作系统。难道云端也是我们购买后给我们分配一台虚拟机,让我们玩?当然这是不可能的,那到底是什么来的,可以说是容器了。

    先看如下图:

                                       上图来自:https://www.cnblogs.com/frankyou/p/6427636.html

    对比完上图,可以看出容器相比于我们传统的虚拟机强大。

    不仅仅如此,开发人员都会发现一个痛点,开发环境,测试环境,生产环境不一致,经常调试起来就是持续的崩溃。出现一个事情,测试找开发说你的系统有 bug ,开发说没问题,我电脑上是好的。这种问题,很大可能环境不同导致的,当然不排除开发人员真的是留了个 bug 。当然,假设使用 docker 后,这些问题都不再是问题了。

可以更快的迁移应用:

    docker的强大号称一次配置,到处运行,也是我们开发运维人员最喜欢的。总的就是可以提前写好一份 docker 的配置,里面写好安装的镜像等等,如果相从 A 服务器迁移到B服务器,把 A 服务器上写好的 docker 文件拉到 B 服务器上,运行这个文件,环境就已经装好了。B 服务器上的环境还是和A服务器上一模一样,这样迁移起来就不会有太大问题,总不可能 A  上环境跑没问题,B 环境一模一样就出问题,你可以找找谁动过你的代码,先打一架。

可以很好的支持维护和拓展

    docker 使用的是分层存储和镜像技术,每一个应用都是一层,每一个应用都是一层,且每个应用会在上一层进行叠加。可以理解为如下图:               

             

    docker实现了复用技术,假设你开启了一个容器tomcat,可能是第一次要下载相关组件。但是你在开启一个 tomcat 的时候,却不用再下载,这就是复用。复用同一个镜像。

    分层模型好处就是前面说到的资源共享。基础镜像在磁盘保存一份,在内存中也有一份,这样就可以为容器所服务,最有趣的是,容器所用镜像是同一个镜像且每一层都可以被共享。

    多个应用都共享同一个镜像,那会不会我在 A 镜像中修改一下一个 /etc 下的文件,会不会导致其他容器也跟着改变?

    答案是--不会

    这里涉及到 docker 的的隔离了。虽然我们用的都是同一个基础镜像,但是我们在容器里操作都是隔离的,不会对基础镜像造成任何修改。

    这里举个小例子:

    我去修改 /etc 下的随便一个文件,随便修改一点东西。这时候,容器会自上而下的去寻找你修改的这个文件,如果找到了,会将该文件复制到你当前的容器中,然后我们修改的内容会在该文件保存。基础镜像的文件不会改变。

    上面的小例子告诉的是 copy-on-write 技术,简称 cow 。简单理解为:容器对镜像的权限只有只读,修改的东西只是在当前容器做修改,不会影响到基础镜像。

    补充:

    假设我们要查找某个文件,docker 是如何查找的,前有有提到一点,自上而下去寻找这个想要的文件,就是从最顶层的往下找,如果找到了,复制到当前的容器层,读入内存,然后显示给我们看。

 

Docker 的架构:

     Docker使用客户端 - 服务器架构。Docker 客户端与Docker 守护进程通信,后者负责构建,运行和分发Docker容器。Docker客户端和守护程序可以 在同一系统上运行,也可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序使用REST API,通过UNIX套接字或网络接口进行通信。

    如图:

    说明:

镜像(Images)Docker 镜像是用于创建 Docker 容器的模板。
容器(Container)容器是独立运行的一个或一组应用。
客户端(Client)Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。
主机(Host)一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
仓库(Registry)Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库,类似 Maven。Docker Hub 提供了庞大的镜像集合供使用。
Docker MachineDocker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

 

Docker的引擎:

                

    Docker 引擎是一个包含以下主要组件的客户端服务器应用程序。

  • 一种服务器,它是一种称为守护进程并且长时间运行的程序。
  • REST API 用于指定程序可以用来与守护进程通信的接口,并指示它做什么。
  • 一个有命令行界面 (CLI) 工具的客户端。

                                           官方就说了上面那么一丢丢,无奈。

 

总结:

    docker 的基本理论到这里基本学的差不多了,想在深入学习的同学请移步官网 https://docs.docker.com/engine/docker-overview/  个人知识水平有限,如果有错,欢迎批评指正。祝大家新年快乐,恭喜发财。

                                                                                                                                         --谢谢

 

程序人生,与君共勉~!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值