再没有统一使用 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)