基于Centos7.9安装docker-compose

安装搭建

docker-compose官网

Docker Compose 是一个使用Compose 文件格式定义的 Docker 上运行多容器应用程序的工具。Compose 文件用于定义如何配置组成应用程序的一个或多个容器。有了 Compose 文件后,可以使用单个命令创建和启动应用程序

gitlab官网地址

在这里插入图片描述

可选择任意版本下载后上传到机器即可

命令下载:注意替换版本信息

curl -SL https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
mv /usr/local/bin/docker-compose /usr/bin/

chmod +x /usr/bin/docker-compose
root@huhy:~# docker-compose -v
Docker Compose version v2.26.1

命令使用

查看帮助文档如下:docker compose(用于较新版本)和docker-compose(旧版本)都是一个东西

  • docker compose 是 Docker 官方推荐的新标准,不需要单独安装,性能更优,兼容性更好,未来会完全取代 docker-compose。
  • docker-compose 是旧版本的 CLI 工具,需要手动安装,未来可能会逐步被淘汰。
root@huhy:~# docker compose --help
Usage:  docker compose [OPTIONS] COMMAND

Define and run multi-container applications with Docker

Options:
      --all-resources              Include all resources, even those not used by services
      --ansi string                Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")
      --compatibility              Run compose in backward compatibility mode
      --dry-run                    Execute command in dry run mode
      --env-file stringArray       Specify an alternate environment file
  -f, --file stringArray           Compose configuration files
      --parallel int               Control max parallelism, -1 for unlimited (default -1)
      --profile stringArray        Specify a profile to enable
      --progress string            Set type of progress output (auto, tty, plain, json, quiet) (default "auto")
      --project-directory string   Specify an alternate working directory
                                   (default: the path of the, first specified, Compose file)
  -p, --project-name string        Project name

Commands:
  attach      Attach local standard input, output, and error streams to a service's running container
  build       Build or rebuild services
  commit      Create a new image from a service container's changes
  config      Parse, resolve and render compose file in canonical format
  cp          Copy files/folders between a service container and the local filesystem
  create      Creates containers for a service
  down        Stop and remove containers, networks
  events      Receive real time events from containers
  exec        Execute a command in a running container
  export      Export a service container's filesystem as a tar archive
  images      List images used by the created containers
  kill        Force stop service containers
  logs        View output from containers
  ls          List running compose projects
  pause       Pause services
  port        Print the public port for a port binding
  ps          List containers
  publish     Publish compose application
  pull        Pull service images
  push        Push service images
  restart     Restart service containers
  rm          Removes stopped service containers
  run         Run a one-off command on a service
  scale       Scale services
  start       Start services
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop services
  top         Display the running processes
  unpause     Unpause services
  up          Create and start containers
  version     Show the Docker Compose version information
  wait        Block until containers of all (or specified) services stop.
  watch       Watch build context for service and rebuild/refresh containers when files are updated

命令使用格式为

docker compose [OPTIONS] COMMAND
  • docker compose 选项解析如下
选项说明
–all-resources包含所有资源,即使这些资源未被 services 使用
–ansi string控制 ANSI 颜色输出方式,可选 never、always 或 auto(默认 auto)
–compatibility以向后兼容模式运行 docker compose,适用于旧版 docker-compose.yml
–dry-run模拟运行命令,不实际执行(用于测试命令行为)
–env-file stringArray指定 环境变量文件(.env 文件)
-f, --file stringArray指定 Compose 配置文件(默认为 docker-compose.yml)
–parallel int控制最大并行数(-1 代表无限制)
–profile stringArray指定 profile(只启动匹配 profile 的服务)
–progress string设置构建进度输出格式,可选 auto、tty、plain、json、quiet(默认 auto)
–project-directory string指定 项目目录(默认使用 docker-compose.yml 的路径)
-p, --project-name string指定 Compose 项目名称
  • 管理常用命令
选项说明
attach连接到运行中的服务容器,类似 docker attach
create创建但不启动容器(docker create 类似)
down停止并移除所有容器、网络、卷
exec在运行中的容器内执行命令(类似 docker exec)
kill强制终止服务容器
logs查看容器日志(类似 docker logs)
pause暂停服务
restart重启容器
rm删除已停止的容器
run运行一次性任务(适用于 jobs 或 cron)
start启动已创建的服务容器
stop停止运行的服务
top查看容器内部进程
unpause恢复已暂停的容器
wait阻塞进程,直到容器停止
  • 编排(Compose 相关)
选项说明
up创建并启动所有容器(常用)
build构建或重新构建服务(类似 docker build)
config解析并验证 docker-compose.yml
ls列出所有运行中的 Compose 项目
ps列出 docker compose 管理的容器
scale扩缩指定服务的副本数量
watch监听 docker-compose.yml 文件变更,自动重启容器
port显示容器的映射端口
events监听 Docker 事件(docker events 类似)
publish发布 Compose 应用(实验性功能)
stats显示容器资源使用率(类似 docker stats)
version显示 docker compose 版本

Compose文件编写

compose的yaml 文件是 Docker Compose 使用的配置文件,它用 YAML 格式定义了多容器应用的部署方式。通过 compose.yaml 文件,可以描述服务、网络、数据卷、环境变量等内容,并使用 docker compose 命令进行管理。

  • yaml文件格式及常见用法如下(缩进格式要求严格!!)
version: '3.8'  # 指定 Docker Compose 版本

services:
  app:
    image: myapp:latest  # 使用已构建的镜像
    container_name: myapp_container  # 指定容器名称
    build:  # 构建配置
      context: ./app  # 指定构建上下文,即 Dockerfile 所在目录
      dockerfile: Dockerfile  # 指定 Dockerfile 文件名
      args:  # 传递构建时参数
        - BUILD_ENV=production
    restart: always  # 自动重启策略: always | no | on-failure | unless-stopped
    ports:
      - "8080:80"  # 宿主机端口:容器端口
    environment:  # 环境变量
      NODE_ENV: production
      DATABASE_URL: mysql://user:password@mysql:3306/dbname
    volumes:  # 挂载数据卷
      - ./data:/app/data
    depends_on:  # 依赖的服务
      - mysql
    networks:
      - backend_network
    deploy:  # 部署相关配置
      resources:
        limits:  # 资源限制
          cpus: "0.5"  # 限制 CPU 核心数
          memory: "512M"  # 限制内存使用
    logging:  # 日志配置
      driver: json-file  # 使用 json 文件存储日志
      options:
        max-size: "10m"  # 每个日志文件最大 10MB
        max-file: "3"  # 最多保留 3 个日志文件
        
  # 常见服务的容器配置如下
  mysql:
    image: mysql:8.0
    container_name: mysql_container
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root  # MySQL root 用户密码
      MYSQL_DATABASE: mydb  # 预创建的数据库
      MYSQL_USER: user  # 创建的普通用户
      MYSQL_PASSWORD: password  # 普通用户密码
    volumes:
      - mysql_data:/var/lib/mysql  # MySQL 数据存储路径
    networks:
      - backend_network

  redis:
    image: redis:latest
    container_name: redis_container
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data  # Redis 持久化存储
    networks:
      - backend_network
    command: ["redis-server", "--appendonly", "yes"]  # 以 AOF 持久化方式运行 Redis

  nginx:
    image: nginx:latest
    container_name: nginx_container
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro  # 挂载 Nginx 配置文件(只读)
      - ./nginx/certs:/etc/nginx/certs  # 挂载 SSL 证书
    depends_on:
      - app  # 依赖应用服务
    networks:
      - frontend_network
      - backend_network

  worker:
    image: myworker:latest
    container_name: worker_container
    restart: always
    depends_on:
      - redis
    environment:
      REDIS_URL: redis://redis:6379  # 连接 Redis
    networks:
      - backend_network

volumes:
  mysql_data:  # MySQL 数据卷
    driver: local
  redis_data:  # Redis 数据卷
    driver: local

networks:
  frontend_network:  # 供 nginx 和外部访问的网络
    driver: bridge
  backend_network:  # 供后端服务使用的内部网络
    driver: bridge
posted @ 2021-06-07 11:07  huhy  阅读(71)  评论(0)    收藏  举报  来源
--> --> /*文章评论*/