妇女网站建设方案,如何将网站搭在阿里云,电竞网站方案设计,wordpress 英文转中文Docker 精通系列
Docker 精通之入门Docker 精通之微服务Docker 精通之常用命令Docker 精通之 Dockerfile Docker 是一个容器工具#xff0c;提供虚拟环境。很多人认为#xff0c;它改变了我们对软件的认识。
站在 Docker 的角度#xff0c;软件就是容器的组合#xff1a;业…Docker 精通系列
Docker 精通之入门Docker 精通之微服务Docker 精通之常用命令Docker 精通之 Dockerfile Docker 是一个容器工具提供虚拟环境。很多人认为它改变了我们对软件的认识。
站在 Docker 的角度软件就是容器的组合业务逻辑容器、数据库容器、储存容器、队列容器......Docker 使得软件可以拆分成若干个标准化容器然后像搭积木一样组合起来。 这正是微服务microservices的思想软件把任务外包出去让各种外部服务完成这些任务软件本身只是底层服务的调度中心和组装层。
微服务很适合用 Docker 容器实现每个容器承载一个服务。一台计算机同时运行多个容器从而就能很轻松地模拟出复杂的微服务架构。 上一篇介绍了 Docker 的概念和基本用法本文接着往下介绍如何在一台计算机上实现多个服务让它们互相配合组合出一个应用程序。 本文选择的示例软件是 WordPress。它是一个常用软件全世界用户据说超过几千万。同时它又非常简单只要两个容器就够了业务容器 数据库容器很适合教学。而且这种业务 数据库的容器架构具有通用性许多应用程序都可以复用。
为了加深读者理解本文采用三种方法演示如何架设 WordPress 网站。
方法 A自建 WordPress 容器方法 B采用官方的 WordPress 容器方法 C采用 Docker Compose 工具
一、预备工作image 仓库的镜像网址
本教程需要从仓库下载 image 文件但是国内访问 Docker 的官方仓库很慢还经常断线所以要把仓库网址改成国内的镜像站。这里推荐使用官方镜像 registry.docker-cn.com 。下面是我的 Debian 系统的默认仓库修改方法其他系统的修改方法参考官方文档。
打开/etc/default/docker文件需要sudo权限在文件的底部加上一行。
DOCKER_OPTS--registry-mirrorhttps://registry.docker-cn.com
当你下载安装的Docker Version不低于1.10时可能会找不到上述文件建议直接通过daemon config进行配置。
使用配置文件 /etc/docker/daemon.json没有时新建该文件
{registry-mirrors: [https://registry.docker-cn.com]}然后重启 Docker 服务。
$ sudo service docker restart现在就会自动从镜像仓库下载 image 文件了。
二、方法 A自建 WordPress 容器
前面说过本文会用三种方法演示 WordPress 的安装。第一种方法就是自建 WordPress 容器。
2.1 官方 的 PHP image
首先新建一个工作目录并进入该目录。
$ mkdir docker-demo cd docker-demo然后执行下面的命令。
$ docker container run --rm --name wordpress --volume $PWD/:/var/www/html php:5.6-apache
上面的命令基于php的 image 文件新建一个容器并且运行该容器。php的标签是5.6-apache说明装的是 PHP 5.6并且自带 Apache 服务器。该命令的三个参数含义如下。
--rm停止运行后自动删除容器文件。--name wordpress容器的名字叫做wordpress。--volume $PWD/:/var/www/html将当前目录$PWD映射到容器的/var/www/htmlApache 对外访问的默认目录。因此当前目录的任何修改都会反映到容器里面进而被外部访问到。
运行上面的命令以后如果一切正常命令行会提示容器对外的 IP 地址请记下这个地址我们要用它来访问容器。我分配到的 IP 地址是 172.17.0.2。
打开浏览器访问 172.17.0.2你会看到下面的提示。
Forbidden
You dont have permission to access / on this server.
这是因为容器的/var/www/html目录也就是本机的docker-demo目录下面什么也没有无法提供可以访问的内容。
请在本机的docker-demo目录下面添加一个最简单的 PHP 文件index.php。
?php
phpinfo();
?
保存以后浏览器刷新172.17.0.2应该就会看到熟悉的phpinfo页面了。 2.2 拷贝 WordPress 安装包
既然本地的docker-demo目录可以映射到容器里面那么把 WordPress 安装包拷贝到docker-demo目录下不就可以通过容器访问到 WordPress 的安装界面了吗
首先在docker-demo目录下执行下面的命令抓取并解压 WordPress 安装包。
$ wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
$ tar -xvf wordpress-4.9.4-zh_CN.tar.gz
解压以后WordPress 的安装文件会在docker-demo/wordpress目录下。
这时浏览器访问http://172.17.0.2/wordpress就能看到 WordPress 的安装提示了。 2.3 官方的 MySQL 容器
WordPress 必须有数据库才能安装所以必须新建 MySQL 容器。打开一个新的命令行窗口执行下面的命令。
$ docker container run \-d \--rm \--name wordpressdb \--env MYSQL_ROOT_PASSWORD123456 \--env MYSQL_DATABASEwordpress \mysql:5.7
上面的命令会基于 MySQL 的 image 文件5.7版本新建一个容器。该命令的五个命令行参数的含义如下。
-d容器启动后在后台运行。--rm容器终止运行后自动删除容器文件。--name wordpressdb容器的名字叫做wordpressdb--env MYSQL_ROOT_PASSWORD123456向容器进程传入一个环境变量MYSQL_ROOT_PASSWORD该变量会被用作 MySQL 的根密码。--env MYSQL_DATABASEwordpress向容器进程传入一个环境变量MYSQL_DATABASE容器里面的 MySQL 会根据该变量创建一个同名数据库本例是WordPress。
运行上面的命令以后正常情况下命令行会显示一行字符串这是容器的 ID表示已经新建成功了。
这时使用下面的命令查看正在运行的容器你应该看到wordpress和wordpressdb两个容器正在运行。
$ docker container ls
其中wordpressdb是后台运行的前台看不见它的输出必须使用下面的命令查看。
$ docker container logs wordpressdb2.4 定制 PHP 容器
现在 WordPress 容器和 MySQL 容器都已经有了。接下来要把 WordPress 容器连接到 MySQL 容器了。但是PHP 的官方 image 不带有mysql扩展必须自己新建 image 文件。
首先停掉 WordPress 容器。
$ docker container stop wordpress停掉以后由于--rm参数的作用该容器文件会被自动删除。然后在docker-demo目录里面新建一个Dockerfile文件写入下面的内容。
FROM php:5.6-apache
RUN docker-php-ext-install mysqli
CMD apache2-foreground
上面代码的意思就是在原来 PHP 的 image 基础上安装mysqli的扩展。然后启动 Apache。
基于这个 Dockerfile 文件新建一个名为phpwithmysql的 image 文件。
$ docker build -t phpwithmysql .
2.5 Wordpress 容器连接 MySQL
现在基于 phpwithmysql image重新新建一个 WordPress 容器。
$ docker container run \--rm \--name wordpress \--volume $PWD/:/var/www/html \--link wordpressdb:mysql \phpwithmysql
跟上一次相比上面的命令多了一个参数--link wordpressdb:mysql表示 WordPress 容器要连到wordpressdb容器冒号表示该容器的别名是mysql。
这时还要改一下wordpress目录的权限让容器可以将配置信息写入这个目录容器内部写入的/var/www/html目录会映射到这个目录。
$ chmod -R 777 wordpress
接着回到浏览器的http://172.17.0.2/wordpress页面点击现在就开始按钮开始安装。
WordPress 提示要输入数据库参数。输入的参数如下。 数据库名wordpress用户名root密码123456数据库主机mysql表前缀wp_不变
点击下一步按钮如果 Wordpress 连接数据库成功就会出现下面的页面这就表示可以安装了。 至此自建 WordPress 容器的演示完毕可以把正在运行的两个容器关闭了容器文件会自动删除。
$ docker container stop wordpress wordpressdb三、方法 BWordpress 官方镜像
上一部分的自建 WordPress 容器还是挺麻烦的。其实不用这么麻烦Docker 已经提供了官方 WordPress image直接用那个就可以了。有了上一部分的基础下面的操作就很容易理解了。
3.1 基本用法
首先新建并启动 MySQL 容器。
$ docker container run \-d \--rm \--name wordpressdb \--env MYSQL_ROOT_PASSWORD123456 \--env MYSQL_DATABASEwordpress \mysql:5.7
然后基于官方的 WordPress image新建并启动 WordPress 容器。
$ docker container run \-d \--rm \--name wordpress \--env WORDPRESS_DB_PASSWORD123456 \--link wordpressdb:mysql \wordpress
上面命令中各个参数的含义前面都解释过了其中环境变量WORDPRESS_DB_PASSWORD是 MySQL 容器的根密码。
上面命令指定wordpress容器在后台运行导致前台看不见输出使用下面的命令查出wordpress容器的 IP 地址。
$ docker container inspect wordpress上面命令运行以后会输出很多内容找到IPAddress字段即可。我的机器返回的 IP 地址是172.17.0.3。
浏览器访问172.17.0.3就会看到 WordPress 的安装提示。 3.2 WordPress 容器的定制
到了上一步官方 WordPress 容器的安装就已经成功了。但是这种方法有两个很不方便的地方。
每次新建容器返回的 IP 地址不能保证相同导致要更换 IP 地址访问 WordPress。WordPress 安装在容器里面本地无法修改文件。
解决这两个问题很容易只要新建容器的时候加两个命令行参数就可以了。
先把刚才启动的 WordPress 容器终止容器文件会自动删除。
$ docker container stop wordpress然后使用下面的命令新建并启动 WordPress 容器。 $ docker container run \-d \-p 127.0.0.2:8080:80 \--rm \--name wordpress \--env WORDPRESS_DB_PASSWORD123456 \--link wordpressdb:mysql \--volume $PWD/wordpress:/var/www/html \wordpress
上面的命令跟前面相比命令行参数只多出了两个。
-p 127.0.0.2:8080:80将容器的 80 端口映射到127.0.0.2的8080端口。--volume $PWD/wordpress:/var/www/html将容器的/var/www/html目录映射到当前目录的wordpress子目录。
浏览器访问127.0.0.2:8080:80就能看到 WordPress 的安装提示了。而且你在wordpress子目录下的每次修改都会反映到容器里面。最后终止这两个容器容器文件会自动删除。
$ docker container stop wordpress wordpressdb四、方法 CDocker Compose 工具
上面的方法 B 已经挺简单了但是必须自己分别启动两个容器启动的时候还要在命令行提供容器之间的连接信息。因此Docker 提供了一种更简单的方法来管理多个容器的联动。
4.1 Docker Compose 简介 Compose 是 Docker 公司推出的一个工具软件可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML格式的配置文件docker-compose.yml写好多个容器之间的调用关系。然后只要一个命令就能同时启动/关闭这些容器。
# 启动所有服务
$ docker-compose up
# 关闭所有服务
$ docker-compose stop
4.2 Docker Compose 的安装
Mac 和 Windows 在安装 docker 的时候会一起安装 docker compose。Linux 系统下的安装参考官方文档。
安装完成后运行下面的命令。
$ docker-compose --version
4.3 WordPress 示例
在docker-demo目录下新建docker-compose.yml文件写入下面的内容。
mysql:image: mysql:5.7environment:- MYSQL_ROOT_PASSWORD123456- MYSQL_DATABASEwordpress
web:image: wordpresslinks:- mysqlenvironment:- WORDPRESS_DB_PASSWORD123456ports:- 127.0.0.3:8080:80working_dir: /var/www/htmlvolumes:- wordpress:/var/www/html
上面代码中两个顶层标签表示有两个容器mysql和web。每个容器的具体设置前面都已经讲解过了还是挺容易理解的。
启动两个容器。
$ docker-compose up
浏览器访问 http://127.0.0.3:8080应该就能看到 WordPress 的安装界面。
现在关闭两个容器。
$ docker-compose stop
关闭以后这两个容器文件还是存在的写在里面的数据不会丢失。下次启动的时候还可以复用。下面的命令可以把这两个容器文件删除容器必须已经停止运行。
$ docker-compose rm
五、参考链接
How to Manually Build Docker Containers for WordPress, by Aleksander KokoHow to Use the Official Docker WordPress Image, by Aleksander KokoDeploying WordPress with Docker, by Aleksander Koko