Docker Compose
一、Dcoker Compose简介
Docker Compose的前身是Fig,Fig被Docker收购之后正式更名为Compose,Compose向下兼容Fig
Docker Compose是一个用于定义和运行多容器Docker应用的工具,只需要一个Compose的配置文件和一个简单的命令就可以创建并运行应用所需的所有容器,而不再需要使用shell脚本来启动容器
Docker Compose 非常适合组合使用多个容器进行开发的场景
Docker Compose 的文件结构
vim docker-compose.yml
1、YAML的数据序列化格式
#YAML 是一种标记语言很直观的数据序列化格式。 文件格式及编写注意事项如下所示
不支持制表符Tab 建缩进,需要使用空格缩进
通常开头缩进2个空格
字符后缩进1个空格,如:冒号,逗号,横杆
用井号注释
如果包含特殊字符用单引号引起来
布尔值必须用单引号括起来
2、Docker compose使用步骤
① 使用Dokcerfile 定义应用程序的环境
② 使用docker-compose.yml 定义构成应用程序的服务,这样它们就可以再隔离环境中一起运行
③ 最后执行 docker-compose up 命令来启动并运行整个应用程序
二、Docker Compose配置介绍
1、配置常用字段
字段 | 描述 |
---|---|
build dockerfile context | 指定Dockerfile文件名构建镜像上下文路径 |
image | 指定镜像 |
command | 执行命令,覆盖默认命令 |
container name | 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale |
deploy | 指定部署和运行服务相关配置,只能在Swarm模式使用 |
environment | 添加环境变量 |
networks | 加入网络 |
ports | 暴露容器端口,与-p相同,但端口不能低于60 |
volumes | 挂载宿主机路径或命令卷 |
restart | 重启策略,默认no,alawys。no-failure,unless-stoped |
hostname | 容器主机名 |
2、Docker Compose
字段 | 描述 |
---|---|
build | 重新构建服务 |
ps | 列出容器 |
up | 创建和启动容器 |
exec | 在容器里面执行命令 |
scale | 指定一个服务容器启动数量 |
top | 显示容器进程 |
logs | 查看容器输出 |
down | 删除容器、网络、数据卷和镜像 |
stop/start/restart | 停止/启动/重启服务 |
3、Compose命令说明
docker-compose选项
–verbose 输出更多调试信息
–version 打印版本并退出
-f, --file FILE 使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME 指定项目名称,默认使用目录名称
三、Compose编排
1、下载Compose
[root@localhost opt]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
2、创建工作目录
[root@localhost opt]# mkdir /opt/compose_nginx
3、构建编排内容
[root@localhost opt]# cd compose_nginx/
[root@localhost compose_nginx]# vim docker-compose.yml
version: ‘3’ #版本号
services: #服务名称
nginx:
hostname: nginx
build:
context: ./nginx
ports: #暴露端口
- 1122:80
- 1133:443
networks: 网络 - abc
vlumes: #挂载卷 - ./wwwroot:/usr/local/nginx/html
networks:
abc:
[root@localhost compose_nginx]# mkdir nginx #创建nginx目录
#在nginx目录下放入nginx的安装包、Dockerfile
[root@localhost nginx]# vim Dockerfile
FROM centos:7
MAINTAINER FYF
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure
–prefix=/usr/local/nginx
–user=nginx
–group=nginx
–with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:&PATH
EXPOSE 80
EXPOSE 443
RUN echo “daemon off;” >>/usr/local/nginx/conf/nginx.conf
#ADD run.sh /run.sh
#RUN chmod 777 /run.sh
CMD ["/usr/local/nginx/sbin/nginx"][root@localhost ~]# cd /opt/compose_nginx/
[root@localhost compose_nginx]# mkdir wwwroot/ #创建网页目录
[root@localhost wwwroot]# vim index.html #在其中写入页面内容
[root@localhost compose_nginx]# docker-compose -f docker-compose.yml up -d #启动编排