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

前言

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

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

1.Compose简介

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

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

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

  • Dockerfile 定义应用的运行环境
  • docker-compose.yml 定义组成应用的各服务
  • docker-compose使用
devops基础--- 说解Docker三剑客之Compose

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

网址:https://github.com/docker/compose/releases
devops基础--- 说解Docker三剑客之Compose

参照网站提示,只需要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
 
devops基础--- 说解Docker三剑客之Compose

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]可以查看具体某个命令的使用格式。

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

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	打印版本信息
 


分享到:


相關文章: