Docker

Docker

Docker 现在已经是互联网公司的标配了,我们通过这篇文章来了解一下 Docker 的相关概念。首先 Docker 是什么,我们举个例子,比如我们盖房子的时候需要画图纸,木头石头等,我们好不容易在某个地方建了一座房子,某天你突发奇想,想要去海边再建一座,那我们只能依照原来的方法在去海边重复劳动一遍。这时有个魔法师,它可以把你的房子变成一个模型[镜像],放到包里,在海边使用这个镜像就可以直接复制出一套房子。

房子就是我们的项目,镜像就是项目的复制,背包就是镜像仓库。如果要动态扩容,就从仓库中去除镜像,随便复制,就可以了,Build Once, Run anywhere!。我们不用在关注版本,兼容与部属的问题。

虚拟机与容器

虚拟机指的是通过软件模拟具有完整硬件系统功能的,运行在一个完全隔离环境中的完整计算机系统。容器指的是将操作系统层虚拟化,是一个标准的软件单元。

原理

对于 Docker 的最简单但是有一定错误的认知是 Docker 是一种性能非常好的虚拟机。

Docker 比传统的虚拟机技术来说先进了不少,具体表现在 Docker 不是在主机上虚拟出一套硬件后再虚拟出一个操作系统,而是让 Docker 容器里面的进程直接运行在宿主机上(Docker 会做文件,网络的隔离)。这样一来,Docker 会体积更轻,跑的更快,同宿主下可创建的个数更多。
容器的特点如下:

  • 随处运行:容器可以将代码与配置文件相关依赖库进行打包,从而确保任何环境下的运行都是一致的。
  • 高资源利用率:容器提供进程级的隔离,因此可以更加精细地设置 CPU 和内存使用率,进而更好地利用服务器的计算资源。
  • 快速扩展:每个容器都可以作为单独的进程予以运行,并且可以共享底层操作系统资源,这样一来可以加快容器的启动和停止效率。

Docker 有三个核心概念:
Docker 是传经容器的工具,是应用容器引擎。

  • Image:镜像,Docker 中的镜像是分层的,可复制的。
  • Container:容器是镜像运行时的一个载体。依托 Docker 的虚拟化技术,给容器创建了独立的端口,进程,文件等空间。Container 就是一个与宿主机器隔离的容器,可以与宿主机器进行 port,volumes,network 等的通信。
  • Repository:Docker 的仓库与 git 类似。在本地构建镜像之后,可以通过仓库进行镜像的分发。

Docker 能做什么

  1. 多环境的部署切换

    业务开发中往往需要区分开发环境与线上环境,利用 Docker 能原封不动的将开发环境中的代码与环境迁移到线上,配合一定的自动化流程即可实现自动的发布。

  2. 复杂环境一键配置

  3. 持续集成单元测试

  4. 同应用多版本隔离,文件隔离。

posted @ 2020-02-07 20:45  当年明月123  阅读(135)  评论(0编辑  收藏  举报