站在 Docker 的角度,Software
is the combination of Containers
:
- 业务逻辑容器
- 数据库容器
- 储存容器
- …
Docker 使得软件可以拆分成若干个标准化容器,然后像搭积木一样组合起来。
这正是微服务(microservices)的思想:
软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层。
如何在一台计算机上实现多个 Services
,让它们互相配合,组合出一个 Application
:
为了加深理解,采用三种方法,演示如何架设 WordPress 网站
方法 A:自建 WordPress 容器
方法 B:采用官方的 WordPress 容器
方法 C:采用 Docker Compose 工具
1. 自建 WordPress Container
1.1 官方 PHP image
1 | docker container run \ |
1.2 拷贝 WordPress 安装包
1 | $ wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz |
1.3 官方 MySQL Container
1 | docker container run \ |
查看正在运行的容器
1 | ➜ docker container ls |
其中,wordpressdb是后台运行的,前台看不见它的输出,必须使用下面的命令查看
1 | docker container logs wordpressdb |
1.4 定制 PHP Container
PHP 的官方 image 不带有mysql扩展,必须自己新建 image 文件
1 | docker container stop wordpress |
Create Dockerfile in docker-demo dir
1 | FROM php:5.6-apache |
基于这个 Dockerfile 文件,新建一个名为 phpwithmysql 的 image 文件.
1 | docker build -t phpwithmysql . |
1.5 WordpresspC 连接 MySQL
1 | docker container run \ |
WordPressC 要连到 wordpressdbC,冒号表示该 Container 的别名是 mysql .
看到以上界面,自建WPC 演示完毕。 关闭 Containers。
1 | ➜ docker container stop wordpress wordpressdb |
2. Official WordPress Container
2.1 mysql container
1 | docker container run \ |
2.2 wordpress container
1 | ➜ docker container run \ |
-p 127.0.0.1:8080:80:将容器的 80 端口 映射到 127.0.0.2 的 8080 端口
–volume “$PWD/wordpress”:/var/www/html:将容器的/var/www/html目录映射到当前目录的wordpress子目录
2.3 docker container ls
1 | ➜ docker container ls --all |
浏览器 http://localhost:8080 就能看到 WordPress 的安装提示.
2.4 stop containers
1 | ➜ docker container stop wordpress wordpressdb |
3. Docker Compose Tool
Compose 一个工具软件, 可以管理多个 Docker 容器组成一个应用.
定义 docker-compose.yml,写好多容器的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器.
1 | docker-compose --version |
3.1 WordPress example
1 | mysql: |
启动 2个 Container
1 | docker-compose up |
关闭 2个 Container
1 | docker-compose stop |
关闭以后,这两个容器文件还是存在的,写在里面的数据不会丢失。下次启动的时候,还可以复用。下面的命令可以把这两个容器文件删除(容器必须已经停止运行)。
1 | docker-compose rm |
Checking if Disqus is accessible...