循序渐进学Docker
上QQ阅读APP看书,第一时间看更新
icon1

第2章 初步体验Docker

上一章概括性地介绍了Docker的发展历史、组织结构、功能特性和使用场景等方面的内容。本章主要从实践的角度,介绍如何在本地搭建一个Docker运行环境。

由于大多数用户的个人电脑用的都是Windows系统,所以我们就先来讲讲在Windows环境下如何安装和运行Docker。

2.1 Windows下安装Docker

为了运行Docker,你的电脑必须安装64位Windows 7及以上版本的系统(包含Windows 8/8.1和Windows 10)。另外,你要确保CPU是支持虚拟化的,并且系统的虚拟化是打开的。

我们也可以先跳过系统是否支持虚拟化的检查直接安装Docker。安装运行过程中如果出现错误再回头检查。

安装步骤如下:

1)到官网https://www.docker.com/toolbox下载Docker Toolbox。

2)双击Docker Toolbox,按照指引进行安装。

3)如果安装成功,在桌面上会有如图2-1所示的两个快捷图标。

图2-1 安装成功后的界面

其中Kitematic是Docker图形化管理方式,Docker Quickstart是命令行管理方式。

4)双击运行Docker Quickstart快捷图标。如果出现如图2-2所示的运行结果,则表明安装正常。

图2-2 运行Docker Quickstart的成功界面

如果出现如图2-3所示的运行结果,表明系统的虚拟化是被禁止的。

图2-3 运行Docker Quickstart的报错界面

5)如果系统的虚拟化是被禁止的,可以通过如下方式检查。

在Windows7下,通过下载Microsoft® Hardware-Assisted Virtualization Detection Tool(https://www.microsoft.com/en-us/download/details.aspx? id=592)工具,按照屏幕提示检查。

在Windows 8或8.1下,右击屏幕左下角的“Start”,选择“任务管理器(T)”,在弹出的界面上,单击左下角的“详细信息(D)”选择“性能”,找到右边的虚拟化,查看是否支持,如图2-4所示。

图2-4 系统是否支持虚拟化的检查

6)经过确认,如果由于系统禁用虚拟化导致Docker运行失败,需要在开机的BIOS中激活虚拟化,电脑型号不同,BIOS的设置方式略有不同。

7)如果设置成功,可以通过运行下面的命令确认Docker工作是否正常。

运行如下命令:

$ docker run hello-world

得到如下结果:

Unable to find image 'hello-world:latest' locally
511136ea3c5a: Pull complete
31cbccb51277: Pull complete
e45a5af57b00: Pull complete
hello-world:latest: The image you are pulling has been verified.
Important: image verification is a tech preview feature and should not be relied on to provide security.
Status: Downloaded newer image for hello-world:latest
Hello from Docker.
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (Assuming it was not already locally available.)
3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.

至此,我们的Docker在Windows下已经安装成功。如果需要升级,下载最新版本的Docker Toolbox重新安装即可。

Docker已经安装成功,下面,就让我们通过一个例子来讲解如何使用Docker。

2.2 利用Docker搭建个人博客

WordPress是一款功能强大的个人博客系统。使用者众多,社区非常活跃,有丰富的插件模板资源。使用WordPress可以快速搭建独立的博客网站。

2.2.1 传统的安装方法

按照传统的安装方法,参考官方的安装文档(http://codex.wordpress.org/zh-cn:安装_WordPress),安装步骤如图2-5所示。

图2-5 传统WordPress安装步骤

WordPress运行环境需要如下软件的支持:

❑PHP 5.6或更新版本。

❑MySQL5.6或更新版本。

❑Apache和mod_rewrite模块。

虽然有“著名的5分钟安装”,但由于需要安装PHP、MySQL和Apache等软件,对于一个经验丰富的老手,安装WordPress也需要一个小时的时间。如果用户对PHP、MySQL和Apache不熟悉,花费一天甚至一周时间估计也不能把WordPress安装成功。

2.2.2 使用Docker进行安装

如果使用Docker来安装WordPress呢?一个完全不知道PHP、MySQL和Apache的小白用户,只通过两条命令就可以把WordPress安装成功,所花费的时间也只有几分钟(主要是从网上下载Docker版的WordPress)。

下面让我们来见识一下这两条神奇的Docker指令吧。

双击桌面的“Docker Quickstart”快捷图标,出现命令行界面,输入如下两条指令:

$ docker run --name db --env MYSQL_ROOT_PASSWORD=example -d mariadb
$ docker run --name MyWordPress --link db:mysql -p 8080:80 -d wordpress

等待下载完成,WordPress就已经安装成功了。

注意

由于要下载的mariadb和WordPress文件比较大,建议尽量使用有线网络替换Wi-Fi无线网络。

安装完成后,如何访问WordPress呢?

在“Docker Quickstart”启动的命令行界面通过输入如下指令获取IP:

$ docker-machine.exe ip
192.168.99.100

然后在浏览器中输入http://192.168.99.100:8080,会出现如图2-6所示的界面。

图2-6 安装成功的引导界面

按照界面的指引,选择网站支持的语言、输入网站标题和用户名密码等信息,配置就完成了,如图2-7所示。

图2-7 配置成功界面

在浏览器中重新输入http://192.168.99.100:8080,一个高端、大气、上档次的个人博客就呈现在我们面前了,如图2-8所示。

图2-8 WordPress用户界面

在页面的右下角,在“功能”→“登录”中,输入用户名、密码即可进入WordPress的管理界面,对博客进行修改和配置,如图2-9所示。

图2-9 WordPress管理界面

至此,一个完整的博客就搭建完成了。

2.2.3 解惑

在上一节,我们通过两条Docker指令,就搭建好一个个人博客网站。大家在惊讶的同时,是不是也很疑惑:那两条Docker指令到底是什么意思?

下面我们就解释一下。先看第一条指令:

docker run --name db --env MYSQL_ROOT_PASSWORD=example -d mariadb

其中:

docker run是一条Docker指令,后面的所有内容“--name db --env MYSQL_ROOT_PASSWORD=example -d mariadb”是Docker指令的参数。

这条指令含义是启动一个mariadb数据库(MySQL数据库的一个分支),数据库的管理员root的密码设置为example,让这个数据库运行在后台,给它起了一个唯一的名字db并进行标示。

这些都是通过参数的指定来实现的。

通过参数最后一部分内容“mariadb”来告诉docker run启动的是一个mariadb数据库。

通过“--env MYSQL_ROOT_PASSWORD=example”参数,设置传入环境变量MYSQL_ROOT_PASSWORD为example,就会在初始化mariadb数据库时root把密码设置为example。

通过“-d”参数,把启动的mariadb数据库设置到后台运行,如果没有该参数,该进程就会在前台运行。

通过“--name db”参数,给这个运行的mariadb数据库起一个名字。假如我们在一台机器上要启动多个mariadb数据库,就可以通过这个名字定位到不同的数据库。

另外一个问题是,我们使用docker run来运行mariadb,但mariadb从哪里来呢?docker run指令首先会从本机检查有没有mariadb程序,如果没有,就会从Docker Hub搜索并下载该程序,Docker Hub就像iPhone的App应用商店。

现在,我们理解了第一条指令是启动一个mariadb数据库。这是WordPress运行环境的三个必需条件之一。接下来看看第二条指令:

docker run -name MyWordPress --link db:mysql -p 8080:80 -d wordpress

和第一条指令非常类似,通过“docker run”在后台运行WordPress程序。但它多出两个参数“--link”和“-p”。

WordPress是把博客和个性化信息存储到数据库,所以需要和数据库建立连接。在第一条指令中我们已经启动了mariadb数据库,并把它命名为db。在第二条指令中,我们通过“--link db:mysql”参数,把WordPress和数据库建立起了连接。

WordPress是通过监听Apache的80端口对外提供服务。但每台机器的80端口只有一个,假如80端口被其他应用占用了怎么办呢?我们通过“-p 8080:80”参数,把原服务的80端口映射到8080,这样就可以通过访问8080端口来访问服务。上一节我们访问WordPress的URL(http://192.168.99.100:8080)端口就是8080,原因就在于这里。我们可以通过“-p”把80端口映射到任意端口上。

2.2.4 其他注意事项

360杀毒软件会把Docker识别为病毒而删掉,所以出现类似情况需要把360杀毒软件停掉再重新安装DockerToolBox。

2.3 本章小结

这一章,我们介绍了在Windows环境下如何安装Docker,并且通过搭建一个个人博客WordPress,让大家了解Docker指令的运行方式。大家有没有被Docker的神奇特性深深吸引住呢?如果有,那么我们接下来就“折腾”得大一些。