# Docker
# Docker 是什么 ?
Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议,Docker 可以让开发者打包以及依赖包到一个轻量级、可移植的容器中,容器完全使用沙箱机制,相互之间不会有任何接口。
# Docker 解决什么问题 ?
A: 你这程序跑不了!
B: 我在我的电脑上可以运行啊
...
Docker 解决了运行环境和配置问题,方便发布,也就方便做持续集成
# Docker 能干什么 ?
Web 应用的自动化打包和发布
自动化测试和持续集成,部署等
# Docker vs 虚拟机
多:Docker 守护进程可以直接与主操作系统进行通信,为各个 Docker 容器分配资源;
快:虚拟机启动需要数分钟,而 Docker 容器可以在数毫秒内启动。
好:Docker 还可以将容器与主操作系统隔离,并将各个容器互相隔离。
省:由于没有臃肿的从操作系统,Docker 可以节省大量的磁盘空间以及其他系统资源。
# Docker 中的名词概念
# 镜像 image
就好比是一个模板,可以通过这个模板来创建容器服务。通过这个镜像可以创建多个容器。
Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。
# 容器 container
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。
# 仓库 repository
仓库就是存储镜像的地方。
仓库分为公有仓库和私有仓库
# Docker 的架构
Docker 是一个 Client-Server 模型的系统,Docker 的守护进程运行在主机上,客户端通过 Socket 来访问里面的容器。
# Docker 为什么比虚拟机快
- Docker 拥有比虚拟机更少的抽象层
- Docker 利用的是宿主机的系统内核,虚拟机需要独立的 Guest OS
# 学习资料
菜鸟教程 - Docker Hello World (opens new window)
Gitbook - Docker - 从入门到实践 (opens new window)