• 什么是 Docker
  • 为什么要使用 Docker
  • Docker 基本概念
  • Docker 引擎
  • Docker 系统架构
  • Docker 镜像
  • Docker 容器
  • Docker 仓库
  • 安装 Docker
  • Ubuntu 安装 Docker
  • CentOS 安装 Docker
  • 树莓派卡片电脑安装 Docker
  • macOS 安装 Docker
  • Windows 安装 Docker
  • Docker 镜像加速器
  • 使用 Docker 镜像
  • Docker 获取镜像
  • Docker 列出镜像
  • Docker 删除本地镜像
  • 利用 commit 理解镜像构成
  • 使用 Dockerfile 定制镜像
  • Dockerfile 指令详解
  • Dockerfile 多阶段构建
  • 其它制作镜像的方式
  • 镜像的实现原理
  • 操作 Docker 容器
  • Docker 启动容器
  • Docker 守护态运行
  • Docker 终止容器
  • Docker 进入容器
  • Docker 导出和导入容器
  • Docker 删除容器
  • 访问 Docker 仓库
  • Docker Hub
  • Docker 私有仓库
  • Docker 私有仓库高级配置
  • Docker 数据管理
  • Docker 数据卷
  • 监听主机目录
  • Docker 网络配置和 Docker 外部访问容器
  • Docker 容器互联
  • Docker 配置 DNS
  • Docker 高级网络配置
  • Docker 快速配置指南
  • Docker 容器访问控制
  • Docker 端口映射实现
  • 配置 docker0 网桥
  • Docker 自定义网桥
  • Docker 工具和示例
  • Docker 编辑网络配置文件
  • 实例:创建一个点到点连接
  • 什么是 Docker Compose
  • Docker Compose 简介
  • Docker Compose 安装与卸载
  • Docker Compose 使用
  • Docker Compose 命令说明
  • Docker Compose 模板文件
  • Docker Compose 实战 Django
  • Docker Compose 实战 Rails
  • Docker Compose 实战 WordPress
  • 什么是 Docker Machine
  • Docker Machine 安装
  • Docker Machine 使用
  • 什么是 Docker Swarm
  • Docker Swarm mode
  • Swarm mode 基本概念
  • 创建 Swarm 集群
  • Swarm mode 部署服务
  • 使用 compose 文件
  • Swarm mode 管理敏感数据
  • Swarm mode 管理配置信息
  • Docker 安全
  • 内核命名空间
  • 控制组
  • 服务端防护
  • 内核能力机制
  • 其它安全特性
  • 安全总结
  • Docker 底层实现
  • 基本架构
  • 命名空间
  • Docker 底层实现-控制组
  • 联合文件系统
  • 容器格式
  • 网络-Docker 底层实现
  • Docker 命令查询
  • Dockerfile 最佳实践
  • Docker 资源链接
  • 什么是 Docker

    Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。

    Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。

    Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer。

    Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。

    下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。