Docker 理论入门

环境配置与部署

    软件部署最大的麻烦之一,就是环境配置的不方便。一个独立的软件由于开发和运行所依赖的环境不一致,部署时可能会浪费很多没必要的功夫。想要从根本上解决问题,最简单粗暴的方法就是把软件与依赖的环境整个打包,复制到运行环境上。Docker 就是这样的一个解决方案。

Docker

    Docker 将应用程序与该程序的所有依赖,都打包在一个文件里。运行这个文件,就能生成一个虚拟容器,程序便可以在其中运行,有了 Docker ,就不必再担心环境问题!

Docker 的用途

  1. 提供一次性的环境。比如,本地运行/测试别人的应用,持续集成的时候提供单元测试和构建的环境。
  2. 提供弹性的云服务。随开随关的特性,很适合云服务的动态扩容和缩容。
  3. 组建微服务架构。多个容器模拟多个服务器,在一台机器上就可以跑多个服务,模拟微服务架构的实施。

容器与镜像

    Docker 基于两个十分重要的概念—— image 和 container。image 和 container 可以类比成面向对象中的类和对象,container 就是 image 运行起来的实例化。

    为了管理镜像,还需要镜像仓库。仓库是集中存放镜像的地方,Docker 官方维护了公共仓库——Docker Hub,类似于 Github 之于版本控制的文件。

Dockerfile

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含一条条构建镜像所需的指令和说明。

对比虚拟机

虚拟机同样也是容器化的一个方案,但实现方式上的大不同导致两者有着很大的区别

在这里插入图片描述

对比可以看到,

虚拟机Docker 容器
硬件级进程隔离OS级进程隔离
一个VM带一个OS容器可共享OS
分钟级启动秒级启动
GB级大小轻量级容器(KBs/MBs)
现成的VM不好找预构建的容器容易获取
移植性更好容器会被摧毁和重建而不是移植
构建时间相对更久秒级构建
需要使用更多资源更少的资源使用

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...