Docker 容器建立个WordPress站点 v1
对于 Docker 我目前还似懂非懂,玩了有几天时间,现在掌握,好像也只有下载镜像,运行容器的程度;总的来说 Docker 还是挺好玩的呀,虽然对于我这个菜鸟(VPS、容器等兴趣爱好者)来说,顶多建个站点放个网站的话,远没有在系统上安装虚拟主机控制面板来的方便。但我得承认,Docker 的未来还是很有发展潜力的。
就我才熟悉 Docker 几天的外行人认为,容器就是一个积木,多个容器组合在一块,就像积木搭建的各种物体一样。想象一下积木,多个积木搭建一个大的方块,而这个方块同样也可以是其他成品的配件;…… 好吧,原谅我有限的想象力和词汇,不能把想到的准确 生动的写出来,对于 Docker 的解释就先这样吧。
下面进入正题,通过 Docker 容器建立个WordPress站点。
搭建思路
系统环境
这里说的系统环境,安装运行 Docker 的机子:可以是真实的物理机器;可以是系统上虚拟机中安装的系统;也可以是Xen、KVM等架构(OpenVZ架构的是不可以的)的VPS,云主机;等等。
我这里用的是:Ubuntu 14.04 64bit
运行WordPress分析
WordPress 基于PHP语言的内容管理系统,需要数据库。所以严格细分下来的话,需要Web前端,PHP环境,数据库,而且还要弄WordPress,而且容器与容器之间的衔接。
太,太麻烦了,然后看到WordPress官方的镜像库,看了看Dockerfile文件,是基于php:5.6-fpm
或php:5.6-apache
。这样子就方便了,直接pull wordpress
不就OK了么。然后数据库就MariaDB这个吧,也直接给弄下来!
https://hub.docker.com/\_/wordpress/
https://hub.docker.com/\_/mariadb/
镜像的官方页面都有详细的说明,和自定义变量,如果要获取详细的信息的话,当然需要进入上面的链接了解。
使用Docker建立WordPress建站
安装Docker
首先是登录或切换到 root 用户。
安装之前首先要看看要不要更换系统的源,我这里是更换了的,使用如下命令:
sed -i 's/archive.ubuntu/cn.archive.ubuntu/g' /etc/apt/sources.list
apt-get update
然后再执行下面命令安装Docker:
curl -sSL https://get.docker.com/ | sh
我之前在某一个VPS上测试的时候,使用上面命令,发现git
没有被安装,如果没有的话,使用命令apt-get install git -y
来安装。不过这里用不到的!
安装成功的截图:
Pull镜像
首先先来说一下加速器,如果从国内的电脑上Pull Docker官方的镜像的话,可能会有些慢(这个也要看情况,反正移动宽带的速度很快);这里建议使用各种加速器,例如163的分别执行下面2行命令:
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://hub-mirror.c.163.com\"" >> /etc/default/docker
service docker restart
然后把WordPress和MariaDB镜像弄下来,命令:
docker pull wordpress
docker pull mariadb
需要一定的时间,过程截图:
运行容器
先把数据库镜像给运行起来(其后运行WordPress镜像的时候可以链接到这个容器):
docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=mypassword -p 10086:3306 -d mariadb
some-mariadb
自定义,其他链接到这个容器的时候可以用来标识;my-password
自定义,数据库root用户的密码;-p 10086:3306
其中10086
端口自定义,数据库远程连接的端口转发到10086。
然后把WordPress镜像给运行起来:
docker run --name some-wordpress --link some-mariadb:mariadb -p 80:80 -e WORDPRESS_DB_HOST=192.168.2.200:10086 -e WORDPRESS_DB_PASSWORD=mypassword -d wordpress
some-wordpress
自定义,一个标识名字;some-mariadb:mariadb
自定义,其中some-mariadb
就是上面运行MariaDB镜像时候设置的;-e WORDPRESS_DB_HOST=192.168.2.200:10086
自定义,这个是容器内定义的变量,对接数据库主机;-e WORDPRESS_DB_PASSWORD=my-password
自定义,对接数据库密码(更多可以去WordPress镜像官方页面查看);-p 80:80
自定义,如果外部访问不用80端口的话,则设置例如为8080:80
。
上面提到的IP
192.168.2.200
是公网IP,因为我是在本地虚拟机上测试的。数据库的连接当然也可以用内网IP,以下的命令可以获取某个容器的内网IP:docker inspect --format='{{.NetworkSettings.IPAddress}}' $CONTAINER_ID ## $CONTAINER_ID < docker ps
但是设置用内网IP毫无意思,毕竟容器每次重启内网IP都是自动更换的;那就设置一个固定的内网IP。唔,这我也不是很懂,对我来说一个外网IP和自定义的端口足够使用了。强调一下,这里说的内网,是相对容器来说的。
设置站点
上面的设置完成之后用IP访问,是服务器或VPS再或虚拟机的IP,加上端口访问。因为我这里设置的是80端口,所以加不加端口无所谓了,反正80端口你也看不出来。打开之后进入WordPress初始化安装:
如果域名指向了这个IP,用域名打开也是一样的:
这样子一个WordPress站点就搭建完成了。也许对于初学者来说搭建过程看着有些头晕,实际很简单的:下载镜像,运行镜像,运行镜像的时候对接容器。
一些 Docker 技巧和命令
查看镜像:
docker images
查看正在运行的容器:
docker ps
停止、启动、杀死一个容器:
docker stop <容器名 或 ID>
docker start <容器名 或 ID>
docker kill <容器名 或 ID>
容器名(NAME)例如:some-wordpress
;ID(CONTAINER ID)例如:dc70ccc3471a
。
停止所有容器,删除所有容器:
docker kill $(docker ps -q) ; docker rm $(docker ps -a -q)
停止所有容器,删除所有容器,删除所有镜像:
docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a)
额外
注意到了吗,我这文章的标题最后面有个v1
字样,这篇文章所用到的搭建WordPress的方法是最最简单的一种。其实我本来是想在Nginx容器、PHP容器、数据库容器的基础上搭建的,但是我后来想想,这样子太麻烦了,还是省点事情吧!本来 Docker 的存在就是为了节约时间,快速搭建的!
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。