- Compose介绍
- Compose安装
当前实验环境:
操作系统:CentOS Linux release 7.5.1804 (Core)
Docker版本:17.05.0-ce
使用pip命令安装:
[root@docker ~]# pip install docker-compose
或者利用二进制文件安装
[root@docker ~]# curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@docker ~]# chmod +x /usr/local/bin/docker-compose
安装之后可以查看版本,确保安装成功
[root@docker ~]# docker-compose --version
docker-compose version 1.14.0, build c7bdf9e
可见,compose的安装非常简单。下面通过compose构建一个php服务。
新建compose目录,并进入目录
[root@docker ~]# mkdir compose
[root@docker ~]# cd compose/
创建docker-compose.yml和Dockerfile文件,内容分别如下:
[root@docker compose]# cat docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "8888:80"
[root@docker compose]# cat Dockerfile
FROM centos:7
MAINTAINER seagull
RUN yum install -y httpd php php-gd php-mysql
RUN echo "<?php phpinfo()?>" > /var/www/html/index.php
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
EXPOSE 80
启动compose,构建容器。
[root@docker compose]# docker-compose up
当显示下面内容时表明构建成功,且容器正常运行
新开启一个终端,输入docker up命令可以看到新开启的容器。其中compose_web是新创建的容器。
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6333835b70a compose_web "/usr/sbin/httpd -..." 5 minutes ago Up 5 minutes 0.0.0.0:8888->80/tcp compose_web_1
622fc7c0e1a8 mysql "docker-entrypoint..." 3 days ago Up 3 days 3306/tcp, 33060/tcp figtest01_db_1
3366972d0221 nginx:v1 "nginx" 7 days ago Up 5 days 80/tcp my_nginx01
在浏览器输入ip:8888,即可验证PHP安装成功。
- Compose原理
- Compose常用命令
- docker-compose.yml 配置简述
YAML是一种标记语言很直观的数据序列化格式,可读性高。类似于XML数据描述语言,语法比XML简单的很多。
YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起
来。
YAML文件格式注意事项:
- 不支持制表符tab键缩进,需要使用空格缩进
- 通常开头缩进2个空格
- 字符后缩进1个空格,如冒号、逗号、横杆
- 用井号注释
- 如果包含特殊字符用单引号引起来
- 布尔值(true、false、yes、no、on、off)必须用引号括起来,这样分析器会将他们解释为字符串。
docker-compose.yml常见命令介绍:
- Compose应用案例
案例一:一键部署LNMP服务
新建lnmp目录,并在该目录下新建nginx、mysql、php等目录。
[root@docker ~]# mkdir lnmp
[root@docker ~]# cd lnmp
分别在nginx、mysql、php目录下增加软件包、Dockerfile文件、配置文件等内容,其中mysql使用官方镜像,nginx和php使用Dockerfile自己构建。在lnmp目录下创建docker-compose.yml 整体目录结构如下:
[root@docker lnmp]# tree
.
├── docker-compose.yml
├── mysql
│ └── conf
│ └── my.cnf
├── nginx
│ ├── Dockerfile
│ ├── nginx-1.12.1.tar.gz
│ └── nginx.conf
└── php
├── Dockerfile
├── php-5.6.31.tar.gz
└── php.ini
在docker-compose.yml目录下执行命令启动
[root@docker lnmp]# docker-compose up
经过长达10分钟的镜像构建,终于构建成功,如图:
新建一个测试文件test.php,通过浏览器可以访问:
本案例是根据阿良老师视频进行的实验,详细情况可访问:
http://edu.51cto.com/course/11201.html?source=so
参考链接1:https://docs.docker.com/compose/compose-file/#reference-and-guidelines
参考链接2:https://www.awaimai.com/2120.html
案例二:一键部署tomcat集群
新建tomcat目录,并在tomcat下新建下列内容,在相应文件夹下放入安装包。
[root@kolla tomcat]# ls
docker-compose.yml mysql nginx tomcat webapps
[root@kolla tomcat]# tree
.
├── docker-compose.yml
├── mysql
│ ├── conf
│ │ └── my.cnf
│ └── data
├── nginx
│ ├── Dockerfile
│ ├── nginx-1.12.1.tar.gz
│ └── nginx.conf
├── tomcat
│ ├── apache-tomcat-8.0.46.tar.gz
│ ├── Dockerfile
│ ├── jdk-8u45-linux-x64.tar.gz
│ └── server.xml
└── webapps
└── ROOT
└── index.jsp
6 directories, 8 files
运行容器
[root@kolla tomcat]# docker-compose up -d
经过几分钟的构建,镜像构建成功并成功启动容器:
新建的容器均为启动状态:
在浏览器验证:
案例三:模拟多节点访问网站(待完成)