本章首先介绍 Docker的三大核心概念:

            镜像(image)

            容器(Container)

            仓库(Repository)

只有理解了这三个概念,才能顺利地理解Docker容器整个生命周期。

最后,笔者将介绍如何在常见的操作系统平台上安装Docker,包括Ununtu、Centos、MacOS和Windows等主流操作系统平台。

 

2.1  核心概念

        Docker的大部分操作都围绕着它的三大核心概念-----镜像、容器和仓库而展开的。因此,准确把握这三大核心概念对于掌握Docker技术尤为重要。

                1.Docker镜像

                Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了Apache应用程序(或用户需要的其他软件)。可以把它称为一个Apache镜像。

                镜像是创建Docker容器的基础。通过版本管理和增量文件系统,Docker提供了一套十分简单的机制来创             建和更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并直接使用。

                2. Docker容器

                Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用,容器是从镜像创建的应用 运行实例,可以将其启动、开始、停止、删除,而这些容器都是彼此相互隔离的、不可见的。

可以把容器看做是一个简易版的Linux系统环境(包括root用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子。

 注意:镜像自身是只读的。容器从镜像启动的时候,会在镜像的最上层创建一个可写层。

                3.Docker仓库·

                Docker仓库类似于代码仓库,它是Docker集中存放镜像文件的场所。有时候会看到有资料将Docker仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器是存放仓库的地方。其上往往存放着多个仓库。每个仓库集中存放某一类镜像。往往包括多个镜像文件,通过不同的标签(tag)来进行区分。例如存放Ubuntu操作系统镜像的仓库称为Ubuntu仓库,其中可能包括14.04、12.04等不同版本的镜像。仓库注册服务器的示例如图2-1所示。

docker技术入门与提高 docker技术入门与实战(第3版)_Docker

图2-1注册服务器与仓库

根据所存储的镜像公开分享与否,Docker仓库可以分为公开仓库(Public)和私有仓库(Private)两种形式。目前,最磊的公开仓库是官方提供的Docker Hub,其中存放了数量庞大的镜像供用户下载。国内不少云服务提供商(如时速云、阿里云)也提供了仓库的本地源,可以提供稳定的国内访问。

当然,用户如果不希望公开分享自己的镜像文件,Docker也支持用户在本地网络内创建一个只能自己访问的私有仓库。当用户创建了自己的镜像之后就可以使用push命令将它上传到指定的公有或者私有仓库。这样用户下次在另外一台机器上使用该镜像时,只需要将其从仓库上pull下来就可以了。

        提示

                可以看出,Docker利用仓库管理镜像的设计理念与git非常相似,实际上在理念设计上借鉴了Git的很多优秀思想。

2.2 安装Docker 

                Docker在主流的操作系统和云平台上都可以使用,包括Linux操作系统(如Ubuntu、Debian、Centos、RedHat等)、MacOS操作系统和Windows操作系统、以及AWS等云平台。

                    用户可以访问Docker官网的Docker(https://www.docker.com/get-docker#/overview)页面,查看获取Docker的方式,以及Docker支持的平台类型、如图2-2所示。

docker技术入门与提高 docker技术入门与实战(第3版)_docker技术入门与提高_02

笔者推荐尽量使用Linux操作系统来运行Docker,因为目前Linux操作系统对Docker的支持是原生的,使用体验最好。

2.2.1 Ubuntu环境下安装Docker

1.系统要求·

        Docker目前只能运行在64位平台上,并且要求内核版本不低于3.10,实际上内核越新越好,过你的内核版本容易造成功能不稳定。

        用户可以通过如下命令检查自己的内核版本详细信息:

jingpan@jingpan:~$ uname -a
Linux jingpan 4.13.0-36-generic #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

或者:

jingpan@jingpan:~$ cat /proc/version
Linux version 4.13.0-36-generic (buildd@lgw01-amd64-033) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)) #40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018

Docker目前支持的最低Ubuntu版本为12.04LTS,但实际上从稳定性上考虑,推荐至少使用14.04LTS版本。

另外,为了让Docker使用aufs存储,推荐安装linux-image-extra软件包。

jingpan@jingpan:~$ sudo apt-get install -y linux-image-extra-$(uname -r)

注意:Ubuntu发行版中,LTS(Long-Term-Support)意味着更稳定的功能和更长期(目前为5年)的升级支持,生产环境中尽量使用使用LTS版本。

使用官方提供的脚本来自动化安装Docker:

ubuntu

jingpan@jingpan:~$ sudo curl -sSL https://get.docker.com/ | sh

centos7

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

 

安装成功后,启动docker服务。

 

ubuntu

jingpan@jingpan:~$ sudo service docker start

centos7

[root@localhost ~]# systemctl start docker

 

2.3 配置Docker服务

 

为了避免每次使用docker命令都要用特权身份,可以将当前用户加入安装中自动创建的docker用户组:


 


jingpan@jingpan:~$ sudo usermod -aG docker jingpan

每次重启Docker服务后,可以通过查看Docker版本信息,确保服务已经正常运行:

jingpan@jingpan:/var/log/upstart$ docker version
Client:
 Version:       18.04.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    3d479c0
 Built: Tue Apr 10 18:20:32 2018
 OS/Arch:       linux/amd64
 Experimental:  false
 Orchestrator:  swarm

Server:
 Engine:
  Version:      18.04.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.4
  Git commit:   3d479c0
  Built:        Tue Apr 10 18:18:40 2018
  OS/Arch:      linux/amd64
  Experimental: false

 

2.4 本章小节

 

本章介绍了Docker的三大核心概念:镜像、容器和仓库。在后面的实践中,读者会感受到,基于三大核心概念所构建的高效工作流程,正是Docker从众多容器虚拟化方案中脱颖而出的重要原因。实际上,Docker的工作流也并非凭空创造的,很大程度上参考了Git和GitHub的设计理念,从而为应用分发和团队合作都带来了众多优势。

在后续章节,笔者交具体讲解围绕这三大核心概念的Docker操作命令。