略懂: Docker 镜像与容器

再没有统一使用 Mac 平台之前,我曾经一度为多个电脑的环境配置而调试相关脚本&修改配置文件。

最早接触 docker 是在学习 Linux 进程的时候,谈到了 namespace,之后了解到了 docker 容器技术。

docker :

  • 加快程序的开发速度(开发/测试/部署)
  • 提供快速开发的生命周期 (开发测试生产)
  • 面向服务的架构 (后端服务可以是分布式,相互通信的容器): 包括 PaaS 基础设施, SaaS 应用程序。
  • 创建独立的隔离的环境 (包括测试环境)
  • 和云计算集合搭建宿主机

简介

docker 不仅仅是指容器技术;它包含了一些列容器相关的技术:

  • docker 守护进程 (可以是非本地的)
  • docker 客户端
  • docker 镜像
  • docker 容器
  • docker 仓库(registry)

大致如下图所示的关系:

容器

容器(Linux Containers)依托于 linux 内核的虚拟化技术

容器就是虚拟化技术的一种(有自己的网络地址,文件系统等),但是容器本身比较复杂,不易安装和自动化;但是 docker 容器则不然,借助 docker 引擎可以很容易把应用自动部署到容器。

不同于虚拟机技术,需要运行在中间件上。容器可以直接运行在相兼容的操作系统内核上(作为用户空间)。

由于容器使用 linux 内核 namespace 和 组管理技术,所以容器只能运行在类 unix 系统上。

使用虚拟机的应用,不仅要包含应用和库,还要包含完整的操作系统。

借助容器,开发人员的开发环境,以及运维人员的部署环境可以保持一致。

docker 提供了容器级别的虚拟化(资源占用少,冗余操作少,启动速度快)。
(主要区分 linux 容器 是优于 虚拟机 的一种机制)

镜像

容器是基于镜像启动的,镜像保存了各种启动参数等。

  • 简单的可以说它就是个打包的应用
  • 复杂的说,多层文件系统叠加的系统(多个只读层,可写层)

仓库

公有的如 docker hub 或者 私有的,指的是存储镜像的库。

参考

进一步的学习可以参考官网的 tutorial, 在此不再深究。(包括容器的一些基本操作, Dockerfile指令等)

总的来说: docker 实现了容器技术,是一门值得掌握的技术。以后再写。


Merlin 2018.2 再次接触 docker, 此番点到为止(如果再换电脑的话,全面采用 docker)

文章目录
  1. 1. 简介
  2. 2. 容器
  3. 3. 镜像
  4. 4. 仓库
  5. 5. 参考
|