第1章 Docker

Docker 是Docker 公司(原dotCloud)2013 年3 月推出的开源容器项目,上市至今已有3年,在世界范围内拥有超高人气。

进入2010 年,服务器市场急速向云环境转移。人们开始更多地租用虚拟服务器,只要缴纳一定租金即可,不需要购买实际的物理服务器。尤其在搭建物理服务器时,服务器硬件的购买及安装都需要耗费相当长的时间。但在云环境下,无论是1 台还是1000 台,只需单击几次即可轻松创建虚拟服务器。

创建虚拟服务器后,还要在其中安装各种软件,进行各种设置。如果只有一两台服务器,那么能够轻松进行设置;但随着服务器数量的增加,采用人工设置就难了。因此,在云环境中进行安装与部署存在很大困难。

Linux/Unix 环境中,虽然可以借助沿用至今的shell 脚本进行自动安装与设置,但这种方式存在一定局限性。使用shell 脚本很难实现集中式管理功能和其他复杂功能。并且,Linux 环境中需要安装很多应用程序,设置也比较复杂。特别是一些微小的设置可能会对操作系统与服务的稳定性产生影响。

此时出现了“不可变基础设施”(Immutable Infrastructure)这一概念,指的是主机OS 与服务运行环境(服务器程序、源代码、已编译的二进制文件)分离,只设置一次运行环境,之后不发生变更(Immutable)。也就是说,将服务运行环境创建为镜像后,部署至各服务器运行。此时若更新服务,则运行环境本身不会发生变更,只要重新生成镜像并再次部署即可。就像云平台中对服务器“用过即扔”,不可变基础设施中的服务运行环境镜像也是用过一次后就扔掉。

enter image description here

不可变基础设施拥有多种优点。

管理方便:由于服务运行环境以镜像形式存在,所以只要管理镜像本身即可。特别是可以集中管理镜像,实现系统部署与管理。此外,镜像生成设置也以文件形式存在,可以灵活用于版本管理系统。

扩展:可以利用一个镜像不断创建服务器。与云平台的自动伸缩功能(Auto Scaling)配合使用,能够轻松实现服务扩展。

测试:只要在开发人员PC 或测试服务器中运行镜像,就可以搭建与实际服务运行环境一致的环境,非常容易测试。

轻量:分离操作系统与服务运行环境,实现轻量化,提供可以随时运行的环境。

Docker 项目实现了不可变基础设施,本书将详细讲解Docker 有关内容。

从Docker 图标与名称本身可以大致猜到Docker 的功能——一头鲸鱼驮着多个集装箱——这很容易让人联想到服务器运行多个容器(镜像)的场景。

另外,这也意味着Docker 不仅用于创建并运行镜像,还可以存储与部署(搬运)镜像。“Docker”一词的字典含义为港口(码头)上卸载集装箱的工人,与操纵容器的Docker 功能类似。

enter image description here

如同用集装箱装载货物一样,将运行服务所需的所有“元素”全部集中到Docker 容器之中。这些“元素”可以是常用开源软件,也可以是自己编写的程序。

enter image description here

目录

  • 前言
  • 第1章 Docker
  • 1.1 虚拟机与DockerDocker
  • 1.2 Docker 镜像与容器
  • 第2章 安装Docker
  • 第3章 使用Docker
  • 第4章 创建Docker镜像
  • 第5章 查看Docker 
  • 第6章 灵活使用Docker
  • 第7章 详细了解Dockerfile
  • 第8章 使用Docker部署应用程序
  • 第9章 Docker监控
  • 第10章 在Amazon Web Services中使用Docker
  • 第11章 在Google Cloud Platform中使用Docker
  • 第12章 使用Docker Hub
  • 第13章 使用Docker Remote API 
  • 第14章 使用CoreOS
  • 第15章 使用Docker搭建WordPress 博客
  • 第16章 使用Docker构建Ruby on Rails应用
  • 第17章 使用Docker构建Django应用
  • 第18章 Docker应用案例
  • 第19章 Docker命令与选项列表