Docker之docker-compose使用教程

996 阅读4分钟

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Docker-Compose的配置文件默认为docker-compose.yml,本文会讲解文件中的配置,会提供常用的容器配置,如:Mysql,Redis,MongoDB,rabbitmq 等容器的配置。

docker-compose安装

  • 方式一:通过pip安装

如果你的系统上有python的pip环境,可以通过下面命令直接安装。

pip install docker-compose
# 或者
pip3 install docker-compose
  • 方式二:通过下载文件安装

    GitHub:github.com/docker/comp…

    image-20210123230656661
    curl -L https://github.com/docker/compose/releases/download/1.28.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    

    linux环境uname命令可显示电脑和操作系统相关信息。uname -s显示操作系统名称;uname -m显示电脑类型。

安装完成后,查看是否安装成功

docker-compose --version
image-20210123232752031

输出版本说明安装成功。如果安装遇到问题可以留言联系我。

docker-compose.yml 文件说明

由于涉及到的指令配置比较多,所以这里只讲常用的,具体的可以上官网查看详细文档:官方文档地址

version: '3'

services:
  # mysql服务
  mysql:
    # 使用的镜像 --> 镜像名:版本
    image: mysql:8.0.16  
    # 容器名称
    container_name: mysql8
    # hostname
    hostname: mysql8
    # 环境变量(多个) --> 环境变量名称: 变量的值
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      TZ: Asia/Shanghai
    # 暴露映射端口(多个) --> 宿主机端口:容器内端口
    ports:
      - 3306:3306
    # 解决容器的依赖、启动先后的问题。以下例子中会先启动其他服务再启动mysql
    depends_on:
      - 其他服务
    # 可以链接其他服务
    links:
      - 其他服务
    # 选择自定义网络组
    networks:
      - custom_net
    # 目录挂载(多个) --> 宿主机路径:容器内路径
    volumes:
      - ./data:/var/lib/mysql
    # 容器重启策略 https://blog.csdn.net/qq_34924407/article/details/80802634
    #  no,默认策略,在容器退出时不重启容器
    #  on-failure,在容器非正常退出时(退出状态非0),才会重启容器
    #  on-failure:3,在容器非正常退出时重启容器,最多重启3次
    #  always,在容器退出时总是重启容器
    #  unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
    restart: on-failure:3
    # 执行命令
    command: 需要执行的命令
    
# 自定义网络组配置
networks:
  custom_net:
    external:
      name: app_net

常用的配置指令就上面这些,其他的可以查看官网文档。

docker-compose常用命令

docker-compose -h                           # 查看帮助

docker-compose up                           # 创建并运行所有容器
docker-compose up -d                        # 创建并后台运行所有容器
docker-compose -f docker-compose.yml up -d  # 指定模板
docker-compose down                         # 停止并删除容器、网络、卷、镜像。

docker-compose logs       # 查看容器输出日志
docker-compose pull       # 拉取依赖镜像
dokcer-compose config     # 检查配置
dokcer-compose config -q  # 检查配置,有问题才有输出

docker-compose restart   # 重启服务
docker-compose start     # 启动服务
docker-compose stop      # 停止服务

常用的容器配置文件

Mysql

version: '3'

services:
  # mysql服务
  mysql:
    image: mysql:8.0.16
    # 容器名称
    container_name: mysql8
    # hostname
    hostname: mysql8
    # 环境变量
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      TZ: Asia/Shanghai
    # 映射端口
    ports:
      - 3306:3306
    # MySQL数据目录挂在
    volumes:
      - ./data:/var/lib/mysql
    # 容器重启策略  https://blog.csdn.net/qq_34924407/article/details/80802634
    restart: on-failure:3

Redis

version: '3'

services:
  # redis 服务
  redis:
    image: redis:latest
    container_name: redis
    hostname: redis
    # 执行命令
    command: redis-server /usr/local/etc/redis/redis.conf --appendonly yes
    volumes:
      # 挂载 Redis数据
      - ./data:/data
      # 挂载 Redis配置 这里要在同目录准备一个redis.conf文件
      - ./redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - 6379:6379
    # 环境变量
    environment:
      TZ: Asia/Shanghai
    # 容器重启策略
    restart: on-failure:3

MangoDB

version: '3'

services:
  mongo:
    image: mongo:latest
    container_name: mongodb
    hostname: mongodb
    restart: on-failure:3
    ports:
      - 27017:27017
    volumes:
      - ./data/db:/data/db
      - ./log:/data/log
    environment:
      MONGO_INITDB_ROOT_USERNAME: codelong
      MONGO_INITDB_ROOT_PASSWORD: codelong
      TZ: Asia/Shanghai

RabbitMQ

version: '3'

services:
  # rabbitmq 服务
  rabbitmq:
    # 镜像名称
    image: rabbitmq:latest
    # 容器名称
    container_name: rabbitmq
    hostname: rabbitmq
    #端口映射
    ports:
      - 5672:5672
      - 15672:15672
      - 4369:4369
      - 25672:25672
    #挂载
    volumes:
      - ./data:/var/lib/rabbitmq
      - ./log:/var/log/rabbitmq/log
    #环境变量
    environment:
      - RABBITMQ_DEFAULT_VHOST=codelong_host
      - RABBITMQ_DEFAULT_USER=codelong
      - RABBITMQ_DEFAULT_PASS=codelong
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "10"
    # 容器重启策略
    restart: on-failure:3

更多的容器配置会上传到GitHub,这里就不一一列出来了。