本节书摘来自华章出版社《循序渐进学Docker》一书中的第2章,第2.2节,作者李金榜 尹烨 刘天斯 陈纯,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.2 利用Docker搭建个人博客
WordPress是一款功能强大的个人博客系统。使用者众多,社区非常活跃,有丰富的插件模板资源。使用WordPress可以快速搭建独立的博客网站。
2.2.1 传统的安装方法
按照传统的安装方法,参考官方的安装文档(http://codex.wordpress.org/zh-cn:安装_WordPress) ,安装步骤如图2-5所示。
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-7所示。
在浏览器中重新输入http://192.168.99.100:8080 ,一个高端、大气、上档次的个人博客就呈现在我们面前了,如图2-8所示。
在页面的右下角,在“功能”→“登录”中,输入用户名、密码即可进入WordPress的管理界面,对博客进行修改和配置,如图2-9所示。
至此,一个完整的博客就搭建完成了。
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。