前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

docker-compose详解(docker compose详解)

qiguaw 2024-08-29 11:21:33 资源文章 25 ℃ 0 评论

一、Compose简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

二、Compose安装

# 运行此命令下载当前的 Docker Compose 稳定版本
sudo curl -L "<https://github.com/docker/compose/releases/download/1.29.1/docker-compose-gt;(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 对二进制文件应用可执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 检查是否安装成功
docker-compose --version

三、Docker Compose部署应用

# 指定版本信息
version: '3'

# 定义服务(容器)
services:
   # 创建具体的服务(容器)
   db:
     # 指定需要使用的镜像名称
     # 镜像名:tag
     # 如果本地没有指定镜像,那么会从docker hub中下载,否则直接使用本地的镜像
     image: mariadb
     # 在运行容器时,指定需要执行的命令或者参数
     command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
     # 指定数据持久化映射
     volumes:
       # - 数据卷名称或者宿主机文件、路径:容器中的路径
       - mysql_db:/var/lib/mysql
     # 指定容器失败时(Existed),重启策略
     restart: always
     # 指定容器中的全局变量
     environment:
      # 变量名: 变量值
      MYSQL_ROOT_PASSWORD: "123456"
      MYSQL_DATABASE: my_django
     # 指定当前容器需要加入的网络
     networks:
      - django_app_net

   django_app:
     # 指定当前服务(容器)依赖的服务
     depends_on:
      - db
     # 指定通过Dockerfile去构建镜像(Dockerfile所在路径)
     build: ./django
     # 在build下方,指定构建的镜像名称:tag
     image: desireyang/django_app:v2
     restart: always
     volumes:
       - logs:/usr/src/app/logs/
       - django_code:/usr/src/app/web_test/
     networks:
      - django_app_net

   web:
     depends_on:
       - django_app
     build: ./nginx
     image: desireyang/web:v2
     restart: always
     # 将容器中监听的端口与宿主机端口镜像映射
     ports:
       - "8444:80"
       - "8440:8000"
     volumes:
       - logs:/var/log/nginx/
     networks:
      - django_app_net

# 指定需要使用的网络
networks:
  # 指定网络的名称,默认会创建bridge桥接网络
  django_app_net:

# 指定数据卷
volumes:
    mysql_db:
    django_code:
    logs:

四、常用命令

# 检查是否有错误
docker-compose config

# 只构建不运行
docker-compose build

#运行compose
docker-compose up -d
# 如果docker-compose文件名不是docker-compose.yml,需要加上-f指定文件
docker-compose up -d -f docker-compose-django.yml

#列出项目中目前所有容器
docker-compose ps -f docker

#停止compose服务
docker-compose stop

#重启compose服务
docker-compose restart

#删除compose服务
docker-compose rm

五、docker-compose.yaml 配置详解

version           # 指定 compose 文件的版本
    services          # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称
        build                 # 指定包含构建上下文的路径, 或作为一个对象,该对象具有 context 和指定的 dockerfile 文件以及 args 参数值
            context               # context: 指定 Dockerfile 文件所在的路径
            dockerfile            # dockerfile: 指定 context 指定的目录下面的 Dockerfile 的名称(默认为 Dockerfile)
            args                  # args: Dockerfile 在 build 过程中需要的参数 (等同于 docker container build --build-arg 的作用)
            cache_from            # v3.2中新增的参数, 指定缓存的镜像列表 (等同于 docker container build --cache_from 的作用)
            labels                # v3.3中新增的参数, 设置镜像的元数据 (等同于 docker container build --labels 的作用)
            shm_size              # v3.5中新增的参数, 设置容器 /dev/shm 分区的大小 (等同于 docker container build --shm-size 的作用)

        command               # 覆盖容器启动后默认执行的命令, 支持 shell 格式和 [] 格式
        configs               # 不知道怎么用
        cgroup_parent         # 不知道怎么用
        container_name        # 指定容器的名称 (等同于 docker run --name 的作用)
        credential_spec       # 不知道怎么用
        deploy                # v3 版本以上, 指定与部署和运行服务相关的配置, deploy 部分是 docker stack 使用的, docker stack 依赖 docker swarm
            endpoint_mode         # v3.3 版本中新增的功能, 指定服务暴露的方式
                vip                   # Docker 为该服务分配了一个虚拟 IP(VIP), 作为客户端的访问服务的地址
                dnsrr                 # DNS轮询, Docker 为该服务设置 DNS 条目, 使得服务名称的 DNS 查询返回一个 IP 地址列表, 客户端直接访问其中的一个地址
            labels                # 指定服务的标签,这些标签仅在服务上设置
            mode                  # 指定 deploy 的模式
                global                # 每个集群节点都只有一个容器
                replicated            # 用户可以指定集群中容器的数量(默认)
            placement             # 不知道怎么用
            replicas              # deploy 的 mode 为 replicated 时, 指定容器副本的数量
            resources             # 资源限制
                limits                # 设置容器的资源限制
                    cpus: "0.5"           # 设置该容器最多只能使用 50% 的 CPU 
                    memory: 50M           # 设置该容器最多只能使用 50M 的内存空间 
                reservations          # 设置为容器预留的系统资源(随时可用)
                    cpus: "0.2"           # 为该容器保留 20% 的 CPU
                    memory: 20M           # 为该容器保留 20M 的内存空间
            restart_policy        # 定义容器重启策略, 用于代替 restart 参数
                condition             # 定义容器重启策略(接受三个参数)
                    none                  # 不尝试重启
                    on-failure            # 只有当容器内部应用程序出现问题才会重启
                    any                   # 无论如何都会尝试重启(默认)
                delay                 # 尝试重启的间隔时间(默认为 0s)
                max_attempts          # 尝试重启次数(默认一直尝试重启)
                window                # 检查重启是否成功之前的等待时间(即如果容器启动了, 隔多少秒之后去检测容器是否正常, 默认 0s)
            update_config         # 用于配置滚动更新配置
                parallelism           # 一次性更新的容器数量
                delay                 # 更新一组容器之间的间隔时间
                failure_action        # 定义更新失败的策略
                    continue              # 继续更新
                    rollback              # 回滚更新
                    pause                 # 暂停更新(默认)
                monitor               # 每次更新后的持续时间以监视更新是否失败(单位: ns|us|ms|s|m|h) (默认为0)
                max_failure_ratio     # 回滚期间容忍的失败率(默认值为0)
                order                 # v3.4 版本中新增的参数, 回滚期间的操作顺序
                    stop-first            #旧任务在启动新任务之前停止(默认)
                    start-first           #首先启动新任务, 并且正在运行的任务暂时重叠
            rollback_config       # v3.7 版本中新增的参数, 用于定义在 update_config 更新失败的回滚策略
                parallelism           # 一次回滚的容器数, 如果设置为0, 则所有容器同时回滚
                delay                 # 每个组回滚之间的时间间隔(默认为0)
                failure_action        # 定义回滚失败的策略
                    continue              # 继续回滚
                    pause                 # 暂停回滚
                monitor               # 每次回滚任务后的持续时间以监视失败(单位: ns|us|ms|s|m|h) (默认为0)
                max_failure_ratio     # 回滚期间容忍的失败率(默认值0)
                order                 # 回滚期间的操作顺序
                    stop-first            # 旧任务在启动新任务之前停止(默认)
                    start-first           # 首先启动新任务, 并且正在运行的任务暂时重叠

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表