Docker Compose-容器编排工具
一、Compose工具的由来
1、Compose 项目是Docker 官方的开源项目,负责实现对 Docker容器集群的快速编排。
使用前面介绍的Dockerfile文件可以很容易定义一个单独的应用容器,然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。
例如要实现web 项目,除了web 服务容器本身,往往还需要再加上后端的数据库服务容器,再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。
如果每个服务都需要手动启停,那么效率之低,维护量之大,维护成本之高,就可想而知了,这时候就需要一个工具能够管理一组相关联的应用容器,这就是Docker Compose。
2、docker-compose.yml文件的常用字段
具体的使用方法会在项目部署中展示
字段 | 描述 |
builddockerfilecontext | 指定Dockerfile文件名构建镜像上下文路径 |
image | 指定镜像 |
command | 执行命令,覆盖默认命令 |
container name |
指定容器名称,由于容器名称是唯一的,如果指定自定义mingcheng 则无法scale |
deploy | 指定部署和运行服务向相关配置,只能在swarm模式使用 |
environment |
添加环境变量 |
networks | 加入网络 |
port | 暴露容器端口,与-p相同,但端口不能低于60 |
volumes | 挂载主机路径或命令卷 |
restart | 重启策略,默认no/always、no-failure、unless-stoped |
hostname | 容器主机名 |
1.3、Docker Compose常用命令
docker-compose [options] [COMMAND] [ARG...] //docker-compose选项: --verbose输出更多调试信息 --version打印版本并退出 -f, -file FILE使用特定的compose模板文件,默认为docker-compose.yml -p, --project-name NAME指定项目名称,默认使用目录名称 //举例: docker-compose -f docker-compose.yml up -d
stop/start/restart | 停止、启动、重启服务 |
build |
重新构建服务 |
ps | 列出容器 |
up | 创建和启动容器 |
exec | 在容器里面执行命令 |
scale | 指定一个服务容器的启动数量 |
top | 显示容器进程 |
logs | 查看容器输出 |
down | 删除容器、网络、数据卷和镜像 |
二、项目部署
1、docker环境已提前部署好,前面博客有部署
2、下载docker-compose安装包
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
3、部署docker-compose
可以在任何目录下使用compose命令 [root@node2 docker]# cp -p docker-compose /usr/local/bin/ [root@node2 bin]# docker-compose -v #查看版本 docker-compose version 1.21.1, build 5a3f1a3
3.1、首先创建一个目录在配置相关内容
[root@node2 bin]# mkdir /root/compose_nginx [root@node2 bin]# cd /root/compose_nginx/ yum install -t tree [root@node2 compose_nginx]# tree ./ ./ ├── docker-compose.yml ├── nginx │ ├── Dockerfile │ ├── nginx-1.12.2.tar.gz │ └── run.sh └── wwwroot 1 directory, 5 files
3.2、创建nginx的Dockerfile文件
[root@node2 compose_nginx]# cd nginx [root@node2 nginx]# ll 总用量 968 -rw-r--r--. 1 root root 506 11月 30 14:58 Dockerfile -rw-r--r--. 1 root root 981687 11月 30 15:01 nginx-1.12.2.tar.gz -rw-r--r--. 1 root root 40 11月 30 14:59 run.sh
FROM centos:7 MAINTAINER nginx RUN yum -y update RUN yum -y install gcc gcc-c++ make pcre-devel zlib-devel ADD nginx-1.12.2.tar.gz /opt WORKDIR /opt/nginx-1.12.2 RUN ./configure \ --prefix=/usr/local/nginx \ --user=nginx \ --group=nginx \ --with-http_stub_status_module && make && make install RUN useradd -M -s /sbin/nologin nginx ENV PATN /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 755 /run.sh CMD ["/run.sh"]
#!/bin/bash /usr/local/nginx/sbin/nginx ~
3.3、创建docker-compose.yml
[root@node2 compose_nginx]# vi docker-compose.yml version: '3' services: nginx: hostname: nginx build: context: ./nginx dockerfile: Dockerfile ports: - 1216:80 - 1217:443 networks: - abc volumes: - ./wwwroot:/usr/local/nginx/html networks: abc:
3.4用docker-compose命令执行,-f指向文件
[root@node2 compose_nginx]# docker-compose -f docker-compose.yml up -d compose_nginx_nginx_1 is up-to-date [root@node2 compose_nginx]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 43daa92d21b2 compose_nginx_nginx "/run.sh" 32 minutes ago Up 27 minutes 0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp compose_nginx_nginx_1
3.5、配置测试网页,执行时会自动创建wwwroot目录
[root@node2 compose_nginx]# ll 总用量 4 -rw-r--r--. 1 root root 237 11月 30 15:27 docker-compose.yml drwxr-xr-x. 2 root root 65 11月 30 15:27 nginx drwxr-xr-x. 2 root root 24 11月 30 15:53 wwwroot [root@node2 compose_nginx]# cd wwwroot [root@node2 wwwroot]# vi index.html <h1>this is web</h1> ~
测试