本文共 2969 字,大约阅读时间需要 9 分钟。
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
使用前面介绍的Dockerfile文件可以很容易定义一个单独的应用容器。然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。
例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例。
如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker Compose。Compose有2个重要的概念:
具体使用会在下面的docker-compose部署中展示:
字段 | 描述 |
---|---|
build dockerfile context | 指定Dockerfile文件名构建镜像上下文路径 |
image | 指定镜像 |
command | 执行命令,覆盖默认莫名 |
container name | 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale |
deploy | 指定部署和运行服务相关配置,只能在Swarm模式使用 |
environment | 添加环境变量 |
networks | 加入网络 |
ports | 暴露容器端口,与-p相同,但端口不能地域60 |
volumes | 挂载宿主机路径或命令卷 |
restart | 重启策略,默认no,always,no-failure,unless-stoped |
hostname | 容器主机名 |
基本的使用格式
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
字段 | 描述 |
---|---|
build | 重新构建服务 |
ps | 列出容器 |
up | 创建和启动容器 |
exec | 在容器里面执行命令 |
scale | 指定—个服务容器启动数量 |
top | 显示容器进程 |
logs | 查看容器输出 |
down | 删除容器、网络、数据卷和镜像 |
stop/start/restart | 停止/启动/重启服务 |
YAML是一种标记语言很直观的数据序列化格式
我们在编写docker compose时需要注意一下几点:1.不支持tab制表符的缩进。
2.通常开头需要空两格。 3.字符需要缩进一个,如冒号、逗号、横杆。 4.可以用井号进行注释。 5.特殊字符需要用单引号引起来。 6.布尔值需要用用好引起来。加载官方源速度会慢一些,
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.2、部署docker-compose
##可以在任何目录下使用compose命令[root@server1 ~]# mv docker-compose /usr/local/bin/[root@server1 ~]# chmod +x /usr/local/bin/docker-compose [root@server1 ~]# docker-compose -vdocker-compose version 1.21.1, build 5a3f1a3
1、首先创建一个总目录
mkdir docker-composecd docker-compose
mkdir nginx cd nginx/#拷贝nginx-1.12.0源码包到nginx/中vi run.sh#!/bin/bash/usr/local/nginx/sbin/nginxvi Dockerfile FROM centos:7MAINTAINER this is nginxRUN yum -y updateRUN yum -y install gcc gcc-c++ make pcre-devel zlib-develRUN useradd -M -s /sbin/nologin nginxADD nginx-1.12.2.tar.gz /optWORKDIR /opt/nginx-1.12.2RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module && make && make installENV PATH /usr/local/nginx/sbin:$PATHEXPOSE 80EXPOSE 443RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.confADD run.sh /run.shRUN chmod 755 /run.shCMD ["/run.sh"]
#创建yml文件vi docker-compose/docker-compose.ymlversion: '3'services: nginx: hostname: nginx build: context: ./nginx dockerfile: Dockerfile ports: - 1912:80 - 1913:443 networks: - bbs volumes: - ./test:/usr/local/nginx/htmlnetworks: bbs:
创建 test 站点目录cd docker-composemkdir testcd test/vi index.htmlThis is web!!!
使用docker-compose命令执行,-f 指向文件
[root@server1 docker-compose]# docker-compose -f docker-compose.yml up -d
转载地址:http://arkgf.baihongyu.com/