闲碎记事本 闲碎记事本
首页
  • JAVA
  • Cloudflare
  • 学完再改一遍UI
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

YAN

我要偷偷记录...
首页
  • JAVA
  • Cloudflare
  • 学完再改一遍UI
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • java

  • linux

  • docker

    • 安装docker
    • Docker Compose 使用
      • 安装/升级
        • 查看 releases 版本
        • 安装
        • 下载
        • 给可执行权限
        • 建立软链接
        • 查看版本
      • 命令
        • 1. 基本操作
        • 2. 容器管理
        • 3. 镜像与构建
        • 4. 网络与卷
        • 5. 调试与清理
      • 常用命令示例
        • 启动并查看日志
        • ps
        • 清理所有资源
        • up
        • exec
        • logs
      • YAMl 示例
        • 基础配置
        • 网络示例
    • docker 操作命令
    • docker环境搭建
    • Dockerfile
    • Dockerfile
  • redis

  • nginx

  • mysql

  • 其他

  • 环境搭建

  • 知识库
  • docker
Yan
2023-03-10
目录

Docker Compose 使用

docker-compose,可以使用 YML 文件来配置应用程序需要的所有服务。

使用一个命令,就可以从 YML 文件配置中创建并启动所有服务,能快速部署应用。

大大简化了docker的使用难度

# 安装/升级

# 查看 releases 版本

此处跳转 (opens new window)

# 安装

# 下载

curl -L "https://github.com/docker/compose/releases/download/2.32.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 给可执行权限

chmod +x /usr/local/bin/docker-compose

# 建立软链接

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 查看版本

docker-compose version

# 命令

# 1. 基本操作

命令 说明
docker-compose up 启动所有服务(前台运行)
docker-compose up -d 后台启动所有服务(守护进程模式)
docker-compose down 停止并移除所有容器、网络、卷
docker-compose down -v 额外删除数据卷(volumes)
docker-compose start 启动已存在的容器
docker-compose stop 停止容器(不删除)
docker-compose restart 重启服务

# 2. 容器管理

命令 说明
docker-compose ps 查看容器状态
docker-compose logs 查看所有容器日志
docker-compose logs -f <service> 实时跟踪日志
docker-compose exec <service> sh 进入容器 Shell
docker-compose run <service> <cmd> 运行一次性命令(如测试)
docker-compose pause/unpause 暂停/恢复容器
# 3. 镜像与构建
命令 说明
docker-compose build 重新构建镜像
docker-compose build --no-cache 无视缓存构建
docker-compose pull 拉取最新镜像
docker-compose images 列出服务镜像

# 4. 网络与卷

命令 说明
docker-compose network ls 查看项目网络
docker-compose volume ls 查看数据卷
docker-compose port <service> <port> 查看端口映射

# 5. 调试与清理

命令 说明
docker-compose config 验证配置文件
docker-compose top 显示容器进程
docker-compose kill 强制停止容器
docker-compose rm 删除已停止的容器

# 常用命令示例

# 启动并查看日志

docker-compose up -d && docker-compose logs -f

# ps

#列出 docker-compose.yaml 当前运行容器
docker-compose ps

#列出 docker-compose.yaml 所有容器
docker-compose ps -a

# 清理所有资源

docker-compose down -v --rmi all

# up

# 重新构建镜像并启动:
docker-compose build --no-cache && docker-compose up -d

# 自动构建镜像,创建服务,启动服务
docker-compose up

# 根据docker-compose.yaml的 build配置 生成新镜像镜像,创建服务,启动服务
docker-compose up --build

# 强制重建服务
docker-compose up -d --force-recreate

# exec

# 交互式方式进入容器
docker-compose exec name /bin/bash

#  执行容器命令
docker-compose exec name ls /

# logs

# 查看容器日志
docker-compose logs 

# 查看容器日志 持续输出 (时间长了会堆积大量日志,不推荐)
docker-compose logs -f 

# 查看容器日志 输出最近100行
docker-compose logs -f  --tail=100

# YAMl 示例

# 基础配置

点击查看
# docker-compose.yaml 示例 (Compose v3)
version: '3.8'  # 指定 Compose 文件版本(推荐 3.8+)

services:
  # --- 服务 1: Web 应用 ---
  webapp:
    image: nginx:latest
    container_name: my_web
    hostname: web-host
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    expose:
      - "8080"
    environment:
      - NGINX_ENV=production
      - DB_HOST=db
    env_file:
      - ./config.env
    volumes:
      - ./html:/usr/share/nginx/html
      - nginx_logs:/var/log/nginx
    networks:
      - frontend
      - backend
    depends_on:
      - db
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 10s
      retries: 3
    deploy:
      replicas: 2
      resources:
        limits:
          cpus: "0.5"
          memory: 512M
    command: ["nginx", "-g", "daemon off;"]
    labels:
      - "com.example.description=Web Server"

  # --- 服务 2: 数据库 ---
  db:
    image: postgres:13
    build:
      context: ./db
      dockerfile: Dockerfile-postgres
      args:
        PG_VERSION: 13
    environment:
      POSTGRES_PASSWORD: mysecretpassword
    volumes:
      - pg_data:/var/lib/postgresql/data
    networks:
      - backend
    sysctls:
      - net.core.somaxconn=1024
    ulimits:
      nproc: 65535
      nofile:
        soft: 20000
        hard: 40000

  # --- 服务 3: Redis ---
  redis:
    build: ./redis
    image: custom_redis
    networks:
      - backend

  # --- 服务 4: Worker (已补全) ---
  worker:
    image: worker:1.0
    container_name: app_worker
    hostname: worker-node
    restart: on-failure
    networks:
      - backend
    depends_on:
      - db
      - redis
    environment:
      <<: *common-env  #  <<: *common-env  # 合并锚点中的环境变量
      WORKER_QUEUE: "high_priority"
    volumes:
      - ./worker/logs:/var/log/worker
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: "0.3"
          memory: 256M
    healthcheck:
      test: ["CMD-SHELL", "pgrep worker_process || exit 1"]
      interval: 60s
      timeout: 10s
      retries: 3

# --- 全局配置 ---
networks:
  frontend:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/24
  backend:
    driver: bridge
    internal: true

volumes:
  nginx_logs:
    driver: local
  pg_data:
    driver: local
    driver_opts:
      type: none
      device: ./pgdata
      o: bind

# --- 扩展配置 ---
x-common-env: &common-env # 定义一组公共环境变量(命名为 common-env),可被多个服务复用 (*common-env)。
  TZ: Asia/Shanghai
  LOG_LEVEL: info
  REDIS_HOST: redis
  DB_HOST: db

# 网络示例

创建网络

version: "3.8"

services:
  nginx:
    image: nginx
    networks:
      global_network:
        ipv4_address: "172.18.0.100"

  mysql:
    image: mysql:5.7
    networks:
      global_network:
        ipv4_address: "172.18.0.101"

networks:
  global_network:
    name: global_network # 显式指定网络名称(避免自动添加项目前缀)
    driver: bridge # bridge/host/none
    ipam:
      config:
        - subnet: "172.18.0.0/24"
          gateway: "172.18.0.1"

项目B: 引用 global_network 并分配IP


services:
  api:
    networks:
      shared_net:
        ipv4_address: "172.18.0.102"

networks:
  shared_net:
    external: true
    name: global_network  # 必须与项目A中定义的name完全一致
上次更新: 2025/05/22, 07:52:48
安装docker
docker 操作命令

← 安装docker docker 操作命令→

最近更新
01
Caddy操作指南
04-25
02
虚拟机磁盘扩展
04-22
03
Swap空间
04-22
更多文章>
Theme by Vdoing | Copyright © 2022-2025 YAN | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式