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 能做什么
-
多环境的部署切换
业务开发中往往需要区分开发环境与线上环境,利用 Docker 能原封不动的将开发环境中的代码与环境迁移到线上,配合一定的自动化流程即可实现自动的发布。
-
复杂环境一键配置
-
持续集成单元测试
-
同应用多版本隔离,文件隔离。
讨论学习 qq 群:725758660