单机编排工具Docker Compose

a.docker-compose简介

宿主机启动较多的容器时,都是手动操作会觉得比较麻烦而且容易出错,此时推荐使用docker 单机编排工具 docker-compose

docker-compose 是 docker 容器的一种单机编排服务,docker-compose 是一个管理多个容器的工具,比如: 可以解决容器之间的依赖关系,并且可以替代docker命令对容器进行创建、启动和停止等手工的操作

docker命令相当于ansible命令,那么docker compose文件,就相当于ansible-playbook的yaml文件

docker-compose 项目是Docker 官方的开源项目,负责实现对Docker 容器集群的快速编排,docker-compose 将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)

github地址: https://github.com/docker/compose
官方地址: https://docs.docker.com/compose/

b.docker-compose在线安装

此方法安装的版本较旧,不推荐

#ubuntu安装,此为默认版本
[root@ubuntu1804 ~]#apt -y install docker-compose
[root@ubuntu1804 ~]#docker-compose --version

#CentOS7安装,依赖EPEL源
[root@centos7 ~]#yum -y install docker-compose
[root@centos7 ~]#docker-compose --version

c.docker-compose二进制安装

直接从github下载安装对应版本

参看说明: https://github.com/docker/compose/releases

# 直接下载比较慢,可使用国内代理站点进行下载,代理地址:https://ghproxy.com  在下载的资源前面加上这个地址即可
[root@centos7 ~]#  wget https://ghproxy.com/https://github.com/docker/compose/releases/download/v2.19.0/docker-compose-linux-x86_64
[root@centos7 ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@centos7 ~]# chmod +x /usr/local/bin/docker-compose
[root@centos7 ~]# docker-compose --help
# 或者使用curl命令下载
[root@centos7 ~]# curl -L https://ghproxy.com/https://github.com/docker/compose/releases/download/v2.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

d.docker-compose格式

1、docker-compose命令格式
docker-compose --help
Define and run multi-container applications with Docker.
Usage:
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
docker-compose -h|--help
#选项说明: 
-f,–file FILE #指定Compose 模板文件,默认为docker-compose.yml
-p,–project-name NAME #指定项目名称,默认将使用当前所在目录名称作为项目名。
--verbose  #显示更多输出信息
--log-level LEVEL   #定义日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL)
--no-ansi #不显示ANSI 控制字符
-v, --version #显示版本

#以下为命令选项,需要在docker-compose.yml|yaml 文件所在在目录里执行
config  -q #查看当前配置,没有错误不输出任何信息
up #创建并启动容器
build  #构建镜像
bundle #从当前docker compose 文件生成一个以<当前目录>为名称的json格式的Docker Bundle 备
份文件
create #创建服务
down #停止和删除所有容器、网络、镜像和卷
events #从容器接收实时事件,可以指定json 日志格式
exec #进入指定容器进行操作
help #显示帮助细信息
images #显示镜像信息
kill #强制终止运行中的容器
logs #查看容器的日志
pause #暂停服务
port #查看端口
ps #列出容器
pull #重新拉取镜像,镜像发生变化后,需要重新拉取镜像
push #上传镜像
restart #重启服务
rm #删除已经停止的服务
run #一次性运行容器
scale  #设置指定服务运行的容器个数
start #启动服务
stop #停止服务
top #显示容器运行状态
unpause #取消暂定
2、docker-compose文件格式

官方文档: https://docs.docker.com/compose/compose-file/

docker compose 文件是一个yaml格式的文件,所以注意行首的缩进很严格

默认docker-compose 命令会调用当前目录下的docker-compose.yml的文件,因此一般执行docker-compose命令前先进入docker-compose.yml文件所在目录

e.docker-compose使用

注意: 使用Docker compose之前,先要安装docker

docker compose 文件可在任意目录,创建文件名为docker-compose.yml 配置文件

wordpress示例:

[root@centos7 ~]# vim docker-compose.yml

version: '3'
services:
  db:
    image: mysql:8.0.29-oracle
    container_name: db
    restart: unless-stopped
    environment:
      - MYSQL_DATABASE=wordpress
      - MYSQL_ROOT_PASSWORD=123456
      - MYSQL_USER=wordpress
      - MYSQL_PASSWORD=123456
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - wordpress-network

  wordpress:
    depends_on:
      - db
    image: wordpress:php7.4-apache
    container_name: wordpress
    restart: unless-stopped
    ports:
      - "80:80"
    environment:
      - WORDPRESS_DB_HOST=db:3306
      - WORDPRESS_DB_USER=wordpress
      - WORDPRESS_DB_PASSWORD=123456
      - WORDPRESS_DB_NAME=wordpress
    volumes:
      - wordpress:/var/www/html
    networks:
      - wordpress-network

volumes:
  wordpress:
  dbdata:

networks:
  wordpress-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.30.0.0/16

[root@centos7 ~]# docker-compose up -d

mindoc示例:

version: "3"
services:
  mindoc:
    image: registry.cn-hangzhou.aliyuncs.com/mindoc-org/mindoc:v2.1
    container_name: mindoc
    privileged: false
    restart: always
    ports:
      - 8181:8181
    volumes:
      - /app/mindoc/data/conf://mindoc/conf
      - /app/mindoc/data/static://mindoc/static
      - /app/mindoc/data/views://mindoc/views
      - /app/mindoc/data/uploads://mindoc/uploads
      - /app/mindoc/data/runtime://mindoc/runtime
      - /app/mindoc/data/database://mindoc/database
    environment:
      - MINDOC_RUN_MODE=prod
      - MINDOC_DB_ADAPTER=sqlite3
      - MINDOC_DB_DATABASE=./database/mindoc.db
      - MINDOC_CACHE=true
      - MINDOC_CACHE_PROVIDER=file
      - MINDOC_ENABLE_EXPORT=false
      - MINDOC_BASE_URL=
      - MINDOC_CDN_IMG_URL=
      - MINDOC_CDN_CSS_URL=
      - MINDOC_CDN_JS_URL=
    dns:
      - 223.5.5.5
      - 223.6.6.6
[root@centos7 ~]# docker-compose up -d  
作者:于浩  创建时间:2025-06-08 21:08
最后编辑:于浩  更新时间:2025-06-10 18:08