Docker技术入门与实战(第3版)
上QQ阅读APP看书,第一时间看更新

2.2 安装Docker引擎

Docker引擎是使用Docker容器的核心组件,可以在主流的操作系统和云平台上使用,包括Linux操作系统(如Ubuntu、Debian、CentOS、Redhat等), macOS和Windows操作系统,以及IBM、亚马逊、微软等知名云平台。

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

图2-2 获取Docker

目前Docker支持Docker引擎、Docker Hub、Docker Cloud等多种服务。

❑ Docker引擎:包括支持在桌面系统或云平台安装Docker,以及为企业提供简单安全弹性的容器集群编排和管理;

❑ DockerHub:官方提供的云托管服务,可以提供公有或私有的镜像仓库;

❑ DockerCloud:官方提供的容器云服务,可以完成容器的部署与管理,可以完整地支持容器化项目,还有CI、CD功能。

Docker引擎目前分为两个版本:社区版本(Community Edition, CE)和企业版本(Enterprise Edition, EE)。社区版本包括大部分的核心功能,企业版本则通过付费形式提供认证支持、镜像管理、容器托管、安全扫描等高级服务。通常情况下,用户使用社区版本可以满足大部分需求;若有更苛刻的需求,可以购买企业版本服务。社区版本每个月会发布一次尝鲜(Edge)版本,每个季度(3、6、9、12月)会发行一次稳定(Stable)版本。版本号命名格式为“年份.月份”,如2018年6月发布的版本号为v18.06。

笔者推荐首选在Linux环境中使用Docker社区稳定版本,以获取最佳的原生支持体验。本书如无特殊说明,则以社区版本的稳定版为例进行说明。

2.2.1 Ubuntu环境下安装Docker

1.系统要求

Ubuntu操作系统对Docker的支持十分成熟,可以支持包括x86_64、armhf、s390x (IBM Z)、ppc64le等系统架构,只要是64位即可。

Docker目前支持的最低Ubuntu版本为14.04 LTS,但实际上从稳定性上考虑,推荐使用16.04 LTS或18.0.4 LTS版本,并且系统内核越新越好,以支持Docker最新的特性。

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

        $ uname -a
        Linux localhost 4.9.36-x86_64-generic

或者:

        $ cat /proc/version
        Linux version 4.9.36-x86_64-generic (maker@linux.com) (gcc version 4.9.2 (Debian
            4.9.2-10))

如果使用Ubuntu 16.04 LTS版本,为了让Docker使用aufs存储,推荐安装如下两个软件包:

        $ sudo apt-get update
        $ sudo apt-get install -y \
            linux-image-extra-$(uname -r) \
            linux-image-extra-virtual

注意

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

2.添加镜像源

首先需要安装apt-transport-https等软件包支持https协议的源:

        $ sudo apt-get update
        $ sudo apt-get install \
            apt-transport-https \
            ca-certificates \
            curl \
            software-properties-common

添加源的gpg密钥:

        $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
        OK

确认导入指纹为“9DC85822 9FC7 DD38854A E2D8 8D81803C 0EBF CD88”的GPG公钥:

        $ sudo apt-key fingerprint 0EBFCD88
        pub    4096R/0EBFCD882017-02-22
              Key fingerprint = 9DC85822 9FC7 DD38854A   E2D8 8D81803C 0EBF CD88
        uid                       Docker Release (CE deb) <docker@docker.com>
        sub    4096R/F273FCD82017-02-22

获取当前操作系统的代号:

        $ lsb_release -cs
        xenial

一般情况下,Ubuntu 16.04 LTS代号为xenial, Ubuntu 18.04 LTS代号为bionic。

接下来通过如下命令添加Docker稳定版的官方软件源,非xenial版本的系统注意修改为自己对应的代号:

        $ sudo add-apt-repository \
            "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
            xenial \
            stable"

添加成功后,再次更新apt软件包缓存:

        $ sudo apt-get update

3.开始安装Docker

在成功添加源之后,就可以安装最新版本的Docker了,软件包名称为docker-ce,代表是社区版本:

        $ sudo apt-get install -y docker-ce

如果系统中存在较旧版本的Docker,会提示是否先删除,选择是即可。

除了基于手动添加软件源的方式之外,也可以使用官方提供的脚本来自动化安装Docker:

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

安装成功后,会自动启动Docker服务。

用户也可以指定安装软件源中其他版本的Docker:

        $ sudo apt-cache madison docker-ce
            docker-ce  |  17.11.0~ce-0~ubuntu  |  https://download.docker.com/linux/ubuntu
                xenial/edge amd64 Packages
            docker-ce  |  17.10.0~ce-0~ubuntu  |  https://download.docker.com/linux/ubuntu
                xenial/edge amd64 Packages
            docker-ce  |  17.09.1~ce-0~ubuntu  |  https://download.docker.com/linux/ubuntu
                xenial/stable amd64 Packages
            ...
        $ sudo apt-get install docker-ce=17.11.0~ce-0~ubuntu

2.2.2 CentOS环境下安装Docker

Docker目前支持CentOS 7及以后的版本。系统的要求跟Ubuntu情况类似,64位操作系统,内核版本至少为3.10。

首先,为了方便添加软件源,以及支持devicemapper存储类型,安装如下软件包:

        $ sudo yum update
        $ sudo yum install -y yum-utils \
            device-mapper-persistent-data \
            lvm2

添加Docker稳定版本的yum软件源:

        $ sudo yum-config-manager \
              --add-repo \
              https://download.docker.com/linux/centos/docker-ce.repo

之后更新yum软件源缓存,并安装Docker:

        $ sudo yum update
        $ sudo yum install -y docker-ce

最后,确认Docker服务启动正常:

        $ sudo systemctl start docker

2.2.3 通过脚本安装

用户还可以使用官方提供的shell脚本来在Linux系统(目前支持Ubuntu、Debian、Oracleserver、Fedora、Centos、OpenSuse、Gentoo等常见发行版)上安装Docker的最新正式版本,该脚本会自动检测系统信息并进行相应配置:

        $ curl -fsSL https://get.docker.com/ | sh

或者:

        $ wget -qO- https://get.docker.com/ | sh

如果想尝鲜最新功能,可以使用下面的脚本来安装最新的“尝鲜”版本。但要注意,非稳定版本往往意味着功能还不够稳定,不要在生产环境中使用:

        $ curl -fsSL https://test.docker.com/ | sh

另外,也可以从store.docker.com/search? offering=community&q=&type=edition找到各个平台上的Docker安装包,自行下载使用。

2.2.4 macOS环境下安装Docker

Docker官方非常重视其在Mac环境下的易用性。由于大量开发者使用Mac环境进行开发,而Docker是一个完整的容器化应用的开发环境,所以Docker官方提供了简单易用的Docker for Mac(https://docs.docker.com/docker-for-mac/)工具。Docker for Mac其实是一个完整的Docker CE工具。下面我们一步步讲解如何正确安装Docker for Mac。

1.选择版本

目前用户可以选择稳定版(Stable)或测试版(Beta),这两个版本都可以通过配置Docker Daemon来开启一些实验特性。配置时,只要启动Docker daemon时带上--experimental参数即可。或者通过修改/etc/docker/daemon.json配置文件中的experimental字段,如下所示:

        {
            "experimental": true
        }

也可以使用如下指令直接确认实验特性是否开启:

        $ docker version -f '{{.Server.Experimental}}'
        true

目前的实验特性主要有ipvlan网络驱动、显卡插件、分布式应用包(Distributed Application Bundles)、监测点(Checkpoint)、回滚(Restore),以及使用squash参数构建镜像。详细的实验特性说明可参见https://github.com/docker/docker-ce/blob/master/components/cli/experimental/README.md

官方建议在生产环境中关闭这些实验特性。

稳定版(stable channel)经过完整测试和精心维护,可用于关注稳定性的生产环境。稳定版每个季度(3个月)发布一次。稳定版用户可以选择是否允许Docker收集使用情况统计或其他数据。稳定版下载地址为https://download.docker.com/mac/stable/Docker.dmg

测试版(edge channel)包含最新的工具和特性,甚至会包含一些开发中的特性。测试版适用于希望尝鲜并有能力处理异常或Bug的用户,并且默认收集所有用户使用数据。测试版每月发布一次。测试版下载地址为https://download.docker.com/mac/edge/Docker.dmg

2.安装须知

Docker for Mac与Docker Machine的关系是互不影响。用户可以从本地default machine拷贝容器和镜像至Docker for Mac的HyperKit VM中。HyperKit是Docker开源的支持OSX的轻量级虚拟化工具包。它基于MacOSX 10.10之后引入的Hypervisor框架。HyperKit应用可以利用硬件虚拟化运行VM,但无须特殊权限或者复杂的管理工具栈。关于HyperKit的详细信息参见https://github.com/moby/hyperkit

当用户运行Docker for Mac时,本机或远程均无须运行Docker Machine。用户使用的是一套新的原生虚拟化系统,不再需要VirtualBox。如果希望了解更多两者对比情况,参见https://docs.docker.com/docker-for-mac/docker-toolbox/

Docker for Mac支持macOS El Capitan 10.11及其后续版本。最小要求是macOS Yosemite 10.10.3,同时Docker并不保证可以完全支持10.10.X, Docker for Mac从版本1.13开始,不再支持10.10版本的macOS。

3.下载运行Docker for Mac

首先,选择需要的版本并下载。双击打开Docker.dmg文件,将Docker.app拖至应用程序(或Applications)文件夹即可。

Docker应用启动后,在任务栏会多出一个小图标,如图2-3所示。

图2-3 下载Docker for Mac后

用户可以通过这个图标打开Docker应用,并进行配置。

4.验证

安装成功后,可以确认运行的Docker版本信息。如果用户环境已安装过Docker环境,则可能存在老版docker-py,为了防止冲突,需要重新安装:

        $ sudo pip uninstall docker-py
        $ sudo pip uninstall docker
        $ sudo pip install docker

此时运行指令已不会提示冲突:

        $ docker-compose --version
        docker-compose version 1.18.0, build 8dd22a9

用户还可以执行docker version获取更全面的版本信息:

        $ docker version
        Client:
            Version:        18.03.1-ce
            API version:   1.37
            Go version:    go1.9.5
            Git commit:    9ee9f40
            Built:          Thu Apr 26 07:13:022018
            OS/Arch:        darwin/amd64
            Experimental: false
            Orchestrator: swarm

        Server:
            Engine:
                Version:        18.03.1-ce
                API version:   1.37 (minimum version 1.12)
                Go version:    go1.9.5
                Git commit:    9ee9f40
                Built:          Thu Apr 26 07:22:382018
                OS/Arch:        linux/amd64
                Experimental: false

可见正常输出客户端和服务端版本信息,以及实验特性默认关闭。如果Docker for Mac启动失败或关闭状态,则会出现Error response from daemon: Bad response from Docker engine提示。

下面启动一个Nginx容器,检查能正确获取镜像并运行:

        $ docker run -d -p 80:80--name webserver nginx

然后使用docker ps指令查看运行的容器:

        $ docker ps
        CONTAINER ID        IMAGE        COMMAND        CREATED        STATUS        PORTS     NAMES
        5d756726c17c      nginx      "nginx -g 'daemon of…"  49 seconds ago  Up 48 seconds
            0.0.0.0:80->80/tcp    webserver

可见Nginx容器已经在0.0.0.0:80启动,并映射到80端口。打开浏览器访问此地址,如图2-4所示。

5.常用配置

点击系统状态栏的Docker图标可以访问管理菜单,如图2-5所示。

图2-4 Nginx容器启动

图2-5 管理菜单

About Docker页面呈现已安装的各组件版本信息、更新通道(稳定版或测试版),以及更新记录(Release Notes)、声明、版权信息等,如图2-6所示。

点击菜单的Preferences项,打开配置管理界面。其中,General页面可以配置自动启动配置、升级、备份,以及使用数据收集配置,如图2-7所示。

图2-6 About Docker页面

图2-7 General页面

在File sharing(文件共享)页面中,用户可以选择哪个Mac本地文件夹与容器共享。点击+后可以继续添加本地目录,点击Apply&Restart按钮生效,这里其实使用了-v参数,如图2-8所示。

在Disk页面中,可以配置磁盘路径,并可以修改虚拟磁盘大小,如图2-9所示。

图2-8 File Sharing页面

图2-9 Disk页面

在Advanced页面中,可以修改本机分配给Docker的计算资源,如CPU、内存和存储位置,如图2-10所示。

在Proxies页面中,可以配置Pull操作时的代理配置,如图2-11所示。

图2-10 Advanced页面

图2-11 Proxies页面

在Daemon页面中,用户可用两种方式(基础模式/高级模式即JSON)配置Docker守护进程,可以选择自定义镜像、开启尝鲜模式等,如图2-12所示。

点击Reset按钮,用户可以选择重启Docker、删除所有Docker数据、恢复出厂设置、重装Docker等操作。

6. Kitematic

通过菜单可以安装Kitematic工具管理本地镜像,点击提示框中的下载地址,如图2-13所示。

图2-12 Daemon页面

图2-13 安装Kitematic

下载Kitematic-Mac.zip并解压缩至应用程序文件夹(或Applications),双击打开Kitematic. app,如图2-14所示。

图2-14 下载Kitematic

进入Docker Hub登录页面,用户可以选择暂时不登录,直接进入主页面,如图2-15所示。

图2-15 进入Docker Hub登录页面

主页面可见多种常用镜像,点击CREATE即可直接创建容器,如图2-16所示。

图2-16 创建容器

以hello-world-nginx镜像为例。点击CREATE后进入下载页面,如图2-17所示。

图2-17 下载镜像

容器运行后,在主页可见运行日志、挂载磁盘(双击可以直接打开)、浏览器预览以及容器配置(Settings)等,如图2-18所示。

图2-18 容器主页

进入配置页面,可见hostname、port,以及卷、网络等配置,如图2-19所示。

用户此时可以打开浏览器访问http://localhost:32768,查看示例页面。

图2-19 配置页面

2.2.5 Windows环境下安装Docker

目前Docker可以通过虚拟机方式来支持Windows 7.1和Windows 8,只要平台CPU支持硬件虚拟化特性即可。读者如果无法确定自己计算机的CPU是否支持该特性也无须担心,实际上,目前市面上主流的CPU都早已支持硬件虚拟化特性。

对Windows 10的用户来说,Docker官方为64位Windows 10 Pro环境(需支持Hyper-V)提供了原生虚拟化应用Docker for Windows。Windows环境下Docker CE同样支持两个版本:稳定版和测试版。这两个版本的异同可以参见上节。下载地址可见官网文档中心的Get Docker→Docker CE→Windows。下面具体介绍安装步骤。

首先,双击exe文件进行安装,如图2-20所示。

图2-20 运行exe文件

安装完成后点击OK开启Hyper-V,如图2-21所示。

图2-21 进入Hyper-V

下面查看常用配置。General页面可以配置自启策略,是否收集用户信息,是否检查升级等,如图2-22所示。

图2-22 Generd页面

Shared Drivers页面可以选择本地磁盘作为共享存储,相当于设置-v参数,在容器中可以使用这些磁盘空间,如图2-23所示。

Advanced页面可以调整容器使用的本地资源,包括CPU和内存,也可以配置镜像和卷的VHD地址,如图2-24所示。

在Network页面可进行网络配置,包括vswitch和DNS配置,如图2-25所示。

图2-23 Shared Drives页面

图2-24 Advanced页面

图2-25 Network页面

若要在Windows 10之外的Windows上运行Docker,可以使用Boot2Docker工具。用户可从https://docs.docker.com/installation/windows/下载使用。