绪论
----之前在docker的网络模式中提到过,在docker默认的bridge模式下,如何使用–link实现容器之间的简单通信。但是思考一个问题,当我们需要部署一个lnmp环境时,我们将nginx、php、mysql跑在3个不同的容器之上。如果我们想要使用–link的方式实现3个容器之间的通信的话,假如一个场景,我们向nginx发送一个php请求,nginx会将请求发送给php解析,php向mysql中查询数据,此场景就需要3个容器之间通信。我们需要首先创建mysql容器,然后创建php容器,在创建php容器时使用link与mysql通信,在创建nginx容器时使用link与php容器通信。此操作显得非常的麻烦。
----在此处我们使用docker-compose容器编排工具即可,将3者的配置文件映射(挂载到宿主机上),根据配置文件互相调用解析等,实现多个容器的部署。
安装docker-compose
两种安装方式,一种是curl安装,另一种是pip方式安装。
这里采用pip方式安装。
首先安装epel源
yum install -y epel-release
安装pip
yum install -y python-pip
下载安装docker-compose
yum install -y docker-compose
或者下载docker-compose的安装包赋权限后使用。
卸载docker-compose的方法
使用pip工具直接卸载即可
pip uninstall docker-compose
编写docker-compose文件搭建lnmp环境
首先准备好nginx配置文件、php测试文件、数据库访问页面,将上述文件放至你想要挂载的宿主机上的文件夹中。下面开始写docker-compose文件
version:"3"
services:
nignx:
image:nginx
ports:
- 80:80
volumes:
- 上述步骤中存储html文件的绝对路径xxx/html:/usr/share/nginx/html
- 上述步骤中存储conf文件的绝对路径xxx/nginx.conf:/etc/nginx/nginx.conf
php:
image: php-fpm
volumes:
- 上述步骤中存储html文件的绝对路径xxx/html:/var/www/html
mysql:
image: mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=123456
最后使用docker-compose up -d命令后台启动,即可启动这3个容器,直接访问即可。此时就搭建好了lnmp架构,可以发现通过docker-compose非常的方便快捷。
----docker-compose更加适用于单机编排,当面向集群和多主机时,我们就需要使用docker swarm来将多个docker host中的容器整合为一个资源池然后管理。使用docker machine使得docker 主机满足加入docker swarm资源池的工具,后续的专栏中都会介绍到。