前言
最近在学习docker,然后看到了阮一峰老师的博客,其中就有docker微服务的教程,刚好手上有个阿里云的服务器,就想着试试看在阿里云上搭建一个个人博客练练手,话不多说,接下来就开始我们的操作。
在开始之前,我们需要粗略的了解一下Docker和WordPress
一、Docker是什么?
在开始操作之前,我们先来了解一下Docker是什么,我们先看看百度上对Docker的描述吧
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows 机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
简而言之,docker就是一个应用容器引擎,就是一个引擎,那么,容器又是什么呢,我们来看官方对它的解释吧
容器是一个标准化的软件单元,它将代码及其所有依赖关系打包,以便应用程序从一个计算环境可靠快速地运行到另一个计算环境。Docker容器镜像是一个轻量的独立的可执行的软件包。包含程序运行的时候所需的一切:代码,运行时间,系统工具,系统库和设置。
这样看着是不是不太明白?想必大家都用过虚拟机吧,接下来我们来看个Docker与虚拟机的对比图,大家就能更好的理解Docker了。
如上图所示,在宿主机中安装了系统,系统中安装了虚拟机,虚拟机虚拟出一台计算机,在虚拟计算机中安装完整的系统,再将服务部署在虚拟系统中。部署的服务受虚拟机的内核调度,虚拟机受主机的调度,多层及下主机资源产生了严重的浪费。如果要在一台机器上部署多个服务,还要环境隔离,那就需要有多个虚拟机,所需要的资源也就不言而喻。
容器是在主机的操作系统中,隔离出单独的用户空间,每个都是单独的沙箱,环境互不影响。需要的系统资源也只是服务所需要的资源,减少了虚拟主机的资源开销。
如果简单的来看,容器相当于虚拟机,但是容器跟虚拟机还是有很大不同的,虚拟机是硬件层面的虚拟化,而Docker容器是系统层面的虚拟化,每个容器化应用都会共享相同的操作系统。容器可以看成一个装好了一组特定应用的虚拟机,它直接利用了宿主机的内核,抽象层比虚拟机更少,更加轻量化,启动速度极快。在以前使用虚拟机的话,一台服务器跑几个服务就差不多了,而现在用了Docker,可以创建很多的容器,同时跑更多的服务。
更详细的大家可以去看看阮一峰老师的博客docker入门教程
2、WordPress是什么?
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统(CMS)来使用。
WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客。
WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要你有一定的专业知识。比如你至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。
WordPress官方支持中文版,同时有爱好者开发的第三方中文语言包,如wopus中文语言包。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。
介绍完docker和WordPress之后,我们就正式开始搭建个人博客了
1、Linux下安装Docker
首先,我们打开Linux终端,获取root权限,输入以下命令,执行,安装Docker:
yum install docker -y
执行完成后,终端输出如下
接下来,我们可以用以下命令查看Docker版本:
docker version
输出如下:然后我们这个时候在终端中输入以下命令启动Docker,并把Docker设为开机启动:
service docker start #启动docker
chkconfig docker on #将docker设置为开机启动
好了,现在我们的Docker已经安装成功了。
2、Docker中配置WordPress
在这一步中,我们需要创建一个容器,用来运行WordPress,一起来操作一波吧。
首先,由于WordPress运行需要Mysql数据库,所以我们需要把Mysql数据库和WordPress的镜像获取到我们的主机。
获取mysql镜像
在终端中输入以下命令:
docker search mysql #搜索mysql镜像
docker pull mysql:5.7 #获取mysql镜像 :后为mysql版本 若不指定版本,则默认为最新版
获取WordPress镜像
docker search wordpress #搜索WordPress镜像
docker pull wordpress #获取WordPress镜像,不加版本号默认为最新
好了,我们把镜像都获取下来了,接下来可以使用下面的命令查看我们的镜像:
docker image ls
既然镜像都获取好了,我们就可以创建容器了
在终端中输入以下命令创建MySQL容器:
docker run -d --name wordpressdb --env MYSQL_ROOT_PASSWORD=123456 --env MYSQL_DATABASE=wordpress mysql:5.7
这里的几个参数都什么意思呢?
-d表示容器启动后,在后台运行
--name wordpressdb:容器的名字叫做wordpressdb
--env MYSQL_ROOT_PASSWORD=123456:向容器进程传入一个环境变量MYSQL_ROOT_PASSWORD,该变量会被用作 MySQL 的根密码。
--env MYSQL_DATABASE=wordpress:向容器进程传入一个环境变量MYSQL_DATABASE,容器里面的 MySQL 会根据该变量创建一个同名数据库
执行结束后会产生一串字符串,这串字符串为容器的ID
接下来,我们继续创建WordPress容器:
docker run -d -p 80:80 --name wordpress --env WORDPRESS_DB_PASSWORD=123456 --link wordpressdb:mysql wordpress
其中:
-p 80:80是将容器的80端口映射到主机的80端口
--env WORDPRESS_DB_PASSWORD=123456 为数据库密码
--link wordpressdb:mysql wordpress表示 WordPress 容器要连到wordpressdb容器,冒号表示该容器的别名是mysql
现在我们可以使用以下命令查看正在运行的容器:
docker container ls #可以加--all查看所有容器,包括停止运行的
好了,大功告成,接下来我们访问主机的IP地址,就可以进行WordPress配置啦
剩下的操作就是配置WordPress了,跟着流程走完即可。
参考:
//www.greatytc.com/p/477974212ba8
https://www.runoob.com/docker/docker-command-manual.html
http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html