Docker 是一个基于 LXC(Linux Containers) 的开源容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。让部署 Server 像手机安装 App 一样简单,摆脱环境搭建的烦恼。
1、容器
容器技术一种操作系统层虚拟化(Operating system–level virtualization)技术,为 Linux 内核容器功能的一个用户空间接口。它将应用软件系统打包成一个软件容器(Container),内含应用软件本身的代码,以及所需要的操作系统核心和库。通过统一的名字空间和共用API来分配不同软件容器的可用硬件资源,创造出应用程序的独立沙箱运行环境,使得 Linux 用户可以容易的创建和管理系统或应用容器。
当一个 App 编译出来的时候,这个 App 相当于一个 容器
它包含了 各种依赖的第三方 Frameworks
和 程序自己
,而 iPhone 相当于 App 的宿主,提供了 iOS 内核和系统提供的 Frameworks 。那么一个容器里,包含了程序依赖的其他程序
和程序自己
,内核则共用宿主的。Linux 的容器环境和 iOS 运行 App 的 Sandbox 沙盒技术也非常相似,容器内无法直接访问外部,但外部则可以访问容器内。
一个 iOS App 要运行起来,需要四部分
- iOS 内核(Darwin)
- 系统提供的 Frameworks
- 各种依赖的第三方 Frameworks
- 程序自己
一个程序在 Linux 上跑起来,需要三部分
- Linux 内核
- 程序依赖的其他程序 (Apache, MySQL…)
- 程序自己
2、Docker 安装
Mac 和 Windows 可以在 Docker Store 直接下载安装,Linux 需要通过命令行安装,部分较新的 Linux 发行版可能已经自带 Docker ,可尝试执行 docker -v
查看是否已经安装。
3、Docker Compose
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,即定义和运行多个 Docker 容器。在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目。
todo。。。