docker 系列(一):docker 的概述与架构

声明:作者才疏学浅,如果文章有误,请评论指出。如果有疑问,欢迎关注评论交流。

一、docker 的概述

1. docker 是什么

      docker 是什么?我们不妨先看看下面 docker 的官方 logo 图。
在这里插入图片描述
        我们不难发现,这 logo 就是一条鲸鱼(其实就是一条船),装着很多集装箱。它们具体有什么意义呢,我们一会再说。
        在这里,我们先绕一个湾子。在日常的正常开发中,我们一般经过以下流程,开发完成–>打成war包或jar发布测试–>测试没问题–>发布生产–>测试没问题–>下班。
在这里插入图片描述
        但是,有时候我们会出现以下情况。我们本地测试明明没有bug,发布到测试环境,测试说某某功能有bug,不许下班!退回来改bug。哎,程序员实在太难了。环境不一致常常造成了代码的水土不服。不过,不要悲伤,即使生活欺骗了你。因为,docker 会帮你解决这个问题。
在这里插入图片描述
        docker 就是解决上面环境不一致的问题而面世的。请看下图,docker 可以把我们的开发war包或jar包及开发环境,装到一个容器里,那么这个容器无论在哪里运行,都保证环境一致。这样就避免了环境不一致造成的bug,于是,可以早点下班啦。
在这里插入图片描述

      言回正传,docker 是什么?我们先找度娘百度一下,看看百度百科对 docker 的定义,定义用下面两句话概括:

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。
  • 容器是完全使用沙箱机制,相互之间不会有任何接口。
          关于 docker 的定义,我们可以这样理解。
          首先,第一句话的意思,就是上面提到的把开发war包或jar包及开发环境装到一个容器里,然后可以移植发布到不同的机器上,保持环境一致性。举个栗子,不使用 docker,我们是搭配环境是这样的:tomcat安装-nginx安装-jdk安装-mysql安装,一系列的安装配置,如果有多台机器,得重复多次这麻烦的操作。但是使用 docker之后, 你可以封装一个tomcat-nginx-jdk-mysql的镜像(也可以拆分成tomcat-nginx-jdk +mysql等),然后你可以移植该镜像在不同的机器上运行。
          第二句话中的容器就如logo上的集装箱,而沙箱机制是指容器应用之间没有接口访问,不能进行资源共享。容器只能访问自己和宿主机的资源,所以容器具有非常良好的独立性、隔离性。

2. docker 的优点

  • 轻量且消耗少
          docker 基于 LXC 轻量级特点,启动快,而且 docker 只加载每个container(容器)变化的部分,占用小资源,相比于虚拟机之类的虚拟化方案,启动更加快速和占用更少资源。

  • 高利用率与隔离
          docker 与底层共享操作系统,其容器服务没有管理程序的额外开销,性能更加优良,系统负载更低。在同等条件下,可以运行更多的容器实例,充分利用系统资源。同时,容器完全使用沙箱机制,拥有不错的资源隔离与限制能力,可以精确地对应用分配CPU、内存等资源,保证了应用之间不会相互影响。

  • 快速部署与微服务
          docker 通过创建流程的容器,不必重新启动操作系统,几秒内能关闭。你可以在数据中心创建或销毁资源,不用担心额外消耗。docker 提供轻量的虚拟化,你能够从 docker 获得一个额外抽象层,能够在单台机器上运行多个容器,而每个容器里都有一个微服务或独立应用。现在,docker也常用于spring cloud 微服务。

  • 便于环境标准化控制
          基于容器提供的环境一致性和标准化,我们可以使用Git、SVN等工具对容器镜像进行版本控制。相比基于代码的版本控制来说,还能够对整个应用运行环境实现版本控制,一旦出现故障可以快速回滚。相比虚拟机镜像,docker 容器压缩和备份速度更快,镜像启动也像启动一个普通进程一样快速。

3. docker 怎么用

  1. docker 系列(二):centos 7 安装 docker
  2. docker 系列(三):docker 相关命令
  3. docker 系列(四):docker 容器数据卷
  4. docker 系列(五):Docker 镜像原理与制作
  5. docker 系列(六):DockerFile 的使用
  6. 后续更新

二、docker 的架构

      Docker 包括三个基本概念:

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如一个镜像包含一个完整的centos,里面仅安装 tomcat 7 或用户的其他应用,镜像可以用来创建docker容器。
  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和对象一样,镜像是类的静态定义,容器是镜像运行时的对象。一个镜像可以创建多个容器,容器可以被创建、启动、停止、删除、暂停等。
  • 仓库(Repository):仓库用来保存镜像,类似GitHub,用来存储代码用的。

三、小结

      由于公司的项目使用到 docker 技术,所以学习 docker。于是,写 docker 系列博客,记录成长。后续会更新该 docker 系列文章。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值