doccker-使用docker-compose管理容器

  1. docker-compose 介绍
  2. Docker-compose的安装
  3. docker-compose 实例
    1. docker-compose.yml 指令解释
  4. docker-compose 命令

docker-compose 介绍

参考官网: https://docs.docker.com/compose/compose-file/compose-file-v3/

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Docker-compose的安装

pip install docker-compose

docker-compose 实例

docker-compose.yml

version: '3'
services:
    mysql:
        image: docker.io/mysql:5.7
        container_name: mysql
        privileged: true
        environment:
            - MYSQL_DATABASE=fastrunner
            - MYSQL_ROOT_PASSWORD=gfc123456
        volumes:
            - ./mysql:/var/lib/mysql  # 映射mysql数据
        ports:
            - "3306:3306"
        restart: always
        command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci


    rabbitmq:
        image: rabbitmq:management-alpine
        container_name: rabbitmq
        environment:
            - RABBITMQ_DEFAULT_USER=guest
            - RABBITMQ_DEFAULT_PASS=guest
        restart: always
        ports:
            - "15672:15672"
            - "5672:5672"


    fasterunner:
        image: fastrunner:latest
        build:
          context: .
          dockerfile: Dockerfile
        container_name: fastrunner
        privileged: true
        restart: always
        depends_on:
            - mysql
            - rabbitmq
        volumes:
            - .:/app
        ports:
            - "8001:8001"
        command: /bin/sh -c "chmod a+x wait-for && ./wait-for mysql:3306 && ./wait-for rabbitmq:5672 && chmod a+x start.sh && ./start.sh && echo fastrunner start succcess!"


networks: # 指定了内网,可以在配置文件中直接使用容器名字,但是需要先在宿主机创建网络
  default:
    external: true
    name: mt-net

docker-compose.yml 指令解释

  • image
    image是指定服务的镜像名称或镜像ID。如果镜像在本地不存在,Compose将会尝试拉取镜像

  • build
    服务除了可以基于指定的镜像,还可以基于一份Dockerfile,在使用up启动时执行构建任务,构建标签是build,可以指定Dockerfile所在文件夹的路径。

    Compose将会利用Dockerfile自动构建镜像,然后使用镜像启动服务容器。

  • dockerfile
    使用dockerfile文件来构建,必须指定构建路径

  • commond
    使用command可以覆盖容器启动后默认执行的命令。

  • depends_on
    用于解决容器的依赖、启动先后的问题

  • ports
    用于映射端口的标签

  • volumes
    挂载一个目录或者一个已存在的数据卷容器,可以直接使用 [HOST:CONTAINER]格式

  • expose
    暴露端口,但不映射到宿主机,只允许能被连接的服务访问。仅可以指定内部端口为参数

docker-compose 命令

  • 查看docker-compose 命令帮助 docker-compose -h

  • 拉取服务依赖的镜像 docker-compose pull

  • 构建(重新构建)项目中的服务容器 docker-compose build

  • 运行服务容器 docker-compose up -d

  • 列出项目中所有的容器 docker-compose ps

  • 停止正在运行的容器 docker-compose stop

  • 启动已经存在的服务容器 docker-compose start

  • 重启项目中的服务 docker-compose restart

  • 删除所有(停止状态的)服务容器 docker-compose rm


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code