devops基础--- 说解Docker三剑客之Compose

前言

Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器。

1.Compose简介

Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。它是一个定义和运行多容器的docker应用工具。使用compose,你能通过YMAL文件配置你自己的服务,然后通过一个命令,你能使用配置文件创建和运行所有的服务。

Compose是一个定位“定义和运行多个Docker容器应用的工具”,其前身是Fig,目前使用的Compose仍然兼容Fig格式的模板文件。

我们使用Compose 基本上分为三步:

Dockerfile 定义应用的运行环境docker-compose.yml 定义组成应用的各服务docker-compose使用

2. 安装 docker-compose(centos环境)

网址:https://github.com/docker/compose/releases

参照网站提示,只需要2步,就可以安装好docker-compose,即是二进制包安装。从 官方 GitHub Release 处直接下载编译好的二进制文件即可。

安装方法: 1. curl -L https://github.com/docker/compose/releases/download/1.25.0-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 2. chmod +x /usr/local/bin/docker-compose

安装后确认

$ docker-compose --version docker-compose version 1.25.0, build 6d101fb

3. docker-compose.yml 定义

关于如何编写合适自己的docker-compose文件呢。我们可以参考一下之前安装vmware harbor的compose文件,有参考就是好的老师了,大家可以查看之前写的文章,关于harbor的介绍。这里就不再一一分析了配置文件了。可以看到compose是按照yaml的规范来写的。

[root@localhost harbor]# cat docker-compose.yml version: '2' services: log: image: vmware/harbor-log:v1.1.2 container_name: harbor-log restart: always volumes: - /var/log/harbor/:/var/log/docker/:z ports: - 127.0.0.1:1514:514 networks: - harbor registry: image: vmware/registry:2.6.1-photon container_name: registry restart: always volumes: - /data/registry:/storage:z - ./common/config/registry/:/etc/registry/:z networks: - harbor environment: - GODEBUG=netdns=cgo command: ["serve", "/etc/registry/config.yml"] depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "registry" mysql: image: vmware/harbor-db:v1.1.2 container_name: harbor-db restart: always volumes: - /data/database:/var/lib/mysql:z networks: - harbor env_file: - ./common/config/db/env depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "mysql" adminserver: image: vmware/harbor-adminserver:v1.1.2 container_name: harbor-adminserver env_file: - ./common/config/adminserver/env restart: always volumes: - /data/config/:/etc/adminserver/config/:z - /data/secretkey:/etc/adminserver/key:z - /data/:/data/:z networks: - harbor depends_on: - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "adminserver" ui: image: vmware/harbor-ui:v1.1.2 container_name: harbor-ui env_file: - ./common/config/ui/env restart: always volumes: - ./common/config/ui/app.conf:/etc/ui/app.conf:z - ./common/config/ui/private_key.pem:/etc/ui/private_key.pem:z - /data/secretkey:/etc/ui/key:z - /data/ca_download/:/etc/ui/ca/:z networks: - harbor depends_on: - log - adminserver - registry logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "ui" jobservice: image: vmware/harbor-jobservice:v1.1.2 container_name: harbor-jobservice env_file: - ./common/config/jobservice/env restart: always volumes: - /data/job_logs:/var/log/jobs:z - ./common/config/jobservice/app.conf:/etc/jobservice/app.conf:z - /data/secretkey:/etc/jobservice/key:z networks: - harbor depends_on: - ui - adminserver logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "jobservice" proxy: image: vmware/nginx:1.11.5-patched container_name: nginx restart: always volumes: - ./common/config/nginx:/etc/nginx:z networks: - harbor ports: - 80:80 - 443:443 - 4443:4443 depends_on: - mysql - registry - ui - log logging: driver: "syslog" options: syslog-address: "tcp://127.0.0.1:1514" tag: "proxy" networks: harbor: external: false

4. docker-compose 使用

对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。

执行docker-compose [COMMAND] --help或者docker-compose help [COMMAND]可以查看具体某个命令的使用格式。

docker-compose 命令的基本的使用格式是:

docker-compose [-f=...] [options] [COMMAND] [ARGS...]

命令选项:

-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名。--x-networking 使用 Docker 的可拔插网络后端特性--x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge--verbose 输出更多调试信息。-v, --version 打印版本并退出。

Docker Compose常用命令如下:

命令 说明 build 构建项目中的服务容器 help 获得一个命令的帮助 kill 通过发送SIGKILL信号来强制停止服务容器 config 验证和查看compose文件配置 create 为服务创建容器。只是单纯的create,还需要使用start启动compose down 停止并删除容器,网络,镜像和数据卷 exec 在运行的容器中执行一个命令 logs 查看服务容器的输出 pause 暂停一个服务容器 port 打印某个容器端口所映射的公共端口 ps 列出项目中目前的所有容器 pull 拉取服务依赖的镜像 push 推送服务镜像 restart 重启项目中的服务 rm 删除所有(停止状态的)服务容器 run 在指定服务上执行一个命令 scale 设置指定服务运行的容器个数 start 启动已经存在的服务容器 stop 停止已经处于运行状态的容器,但不删除它 top 显示运行的进程 unpause 恢复处于暂停状态中的服务 up 自动完成包括构建镜像、创建服务、启动服务并关闭关联服务相关容器的一些列操作 version 打印版本信息