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/下载使用。