Docker Compose 配置指南

目录

      • [1. Docker Compose 配置](#1. Docker Compose 配置)
        • [1.1 基本配置结构](#1.1 基本配置结构)
        • [1.2 `docker-compose.yml` 的各部分](#1.2 docker-compose.yml 的各部分)
        • [1.3 常用配置选项](#1.3 常用配置选项)
      • [2. Docker Compose 使用方法](#2. Docker Compose 使用方法)
        • [2.1 创建 Docker Compose 配置文件](#2.1 创建 Docker Compose 配置文件)
        • [2.2 启动服务](#2.2 启动服务)
        • [2.3 查看容器状态](#2.3 查看容器状态)
        • [2.4 查看服务日志](#2.4 查看服务日志)
        • [2.5 停止服务](#2.5 停止服务)
        • [2.6 重新构建服务](#2.6 重新构建服务)
      • [3. Docker Compose 常用命令](#3. Docker Compose 常用命令)
        • [3.1 `docker compose up`](#3.1 docker compose up)
        • [3.2 `docker compose down`](#3.2 docker compose down)
        • [3.3 `docker compose ps`](#3.3 docker compose ps)
        • [3.4 `docker compose logs`](#3.4 docker compose logs)
        • [3.5 `docker compose exec`](#3.5 docker compose exec)
        • [3.6 `docker compose stop`](#3.6 docker compose stop)
        • [3.7 `docker compose build`](#3.7 docker compose build)
      • [4. 总结](#4. 总结)

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个 docker-compose.yml 文件,你可以轻松地定义应用中的服务、网络、存储卷等资源,并用一个命令启动所有服务。Docker Compose 主要用于简化多容器应用的开发、测试和部署流程。

本文将详细介绍 Docker Compose 的配置、常用命令,以及使用方法的具体示例。

1. Docker Compose 配置

Docker Compose 的核心配置文件是 docker-compose.yml,它遵循 YAML 格式来定义应用中的多个服务。

1.1 基本配置结构

一个最基础的 docker-compose.yml 文件结构通常包括以下部分:

yaml 复制代码
services:
  # 定义服务
  web:
    image: nginx  # 使用官方 nginx 镜像
    ports:
      - "8080:80"  # 将宿主机的8080端口映射到容器的80端口
    volumes:
      - ./html:/usr/share/nginx/html  # 将本地html文件夹挂载到容器的html目录
    networks:
      - webnet  # 使用名为 webnet 的网络

  db:
    image: mysql:5.7  # 使用 MySQL 镜像
    environment:
      MYSQL_ROOT_PASSWORD: example  # 设置MySQL root 密码
    networks:
      - webnet  # 使用同样的网络

networks:
  webnet:  # 定义 webnet 网络
1.2 docker-compose.yml 的各部分
  • services:定义服务,每个服务可以有一个容器。每个服务都可以使用一个 Docker 镜像,或者从 Dockerfile 构建。
  • image :指定 Docker 镜像,通常是公开镜像(如 nginx),或者是自己构建的镜像。
  • ports :定义端口映射,"宿主机端口:容器端口"
  • volumes:挂载数据卷,将宿主机的文件夹或文件挂载到容器内部,常用于持久化存储数据。
  • environment:设置环境变量,通常用于传递配置参数。
  • networks:定义和配置 Docker 网络。可以指定多个服务共享同一个网络。
1.3 常用配置选项
  • build:从 Dockerfile 构建镜像。

    yaml 复制代码
    build:
      context: ./app  # 指定 Dockerfile 目录
  • depends_on:服务之间的依赖关系,确保容器启动顺序。

    yaml 复制代码
    depends_on:
      - db
  • restart:容器退出后的重启策略。

    yaml 复制代码
    restart: always  # 始终重启容器

2. Docker Compose 使用方法

2.1 创建 Docker Compose 配置文件

首先,创建一个 docker-compose.yml 文件,定义你的应用程序中所需的服务。

  1. 在你的项目根目录下,创建一个 docker-compose.yml 文件。
  2. 在文件中定义所有的服务,如 Web 服务、数据库服务等。

例如,创建一个包含 nginxMySQL 的示例文件:

yaml 复制代码
services:
  web:
    image: nginx
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    networks:
      - webnet

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    networks:
      - webnet

networks:
  webnet:
2.2 启动服务
  1. docker-compose.yml 文件所在的目录,打开命令行并运行以下命令:

    bash 复制代码
    docker compose up

    该命令会启动所有定义在 docker-compose.yml 中的服务。你可以通过浏览器访问 http://localhost:8080 来查看 Nginx 服务是否已经启动。

  2. 如果你希望容器在后台运行,可以使用 -d 参数:

    bash 复制代码
    docker compose up -d

    这样,Docker Compose 将会在后台启动所有服务。

2.3 查看容器状态

可以使用以下命令查看正在运行的容器状态:

bash 复制代码
docker compose ps

输出示例如下:

bash 复制代码
       Name                     Command               State           Ports         
------------------------------------------------------------
myapp_db_1          docker-entrypoint.sh mysqld   Up      3306/tcp
myapp_web_1         /docker-entrypoint.sh nginx    Up      0.0.0.0:8080->80/tcp
2.4 查看服务日志

可以查看各个服务的日志信息:

bash 复制代码
docker compose logs

或者查看特定服务的日志,例如查看 web 服务:

bash 复制代码
docker compose logs web
2.5 停止服务

停止并删除所有服务容器及其相关资源:

bash 复制代码
docker compose down

如果只想停止服务,而不删除容器,可以使用:

bash 复制代码
docker compose stop
2.6 重新构建服务

如果修改了 Dockerfiledocker-compose.yml 中的某些内容,可以使用 --build 参数重新构建镜像:

bash 复制代码
docker compose up --build

这样会重新构建服务并启动容器。


3. Docker Compose 常用命令

3.1 docker compose up

启动和运行多容器服务。通过 docker-compose.yml 文件来启动、停止容器。

bash 复制代码
docker compose up

常用参数:

  • -d:后台运行容器。
  • --build:在启动之前构建镜像。
  • --force-recreate:强制重新创建容器。
3.2 docker compose down

停止并删除所有容器、网络、卷等资源。

bash 复制代码
docker compose down

常用参数:

  • --volumes-v:同时删除数据卷。
  • --remove-orphans:删除与当前服务不相关的容器。
3.3 docker compose ps

查看当前运行的容器和服务状态。

bash 复制代码
docker compose ps

输出包括每个容器的名称、状态、端口等信息。

3.4 docker compose logs

查看服务日志。默认情况下,显示所有服务的日志。

bash 复制代码
docker compose logs

查看特定服务的日志:

bash 复制代码
docker compose logs <service-name>

例如,查看 web 服务的日志:

bash 复制代码
docker compose logs web
3.5 docker compose exec

在正在运行的容器内执行命令。比如,进入 web 容器的 bash 环境:

bash 复制代码
docker compose exec web bash
3.6 docker compose stop

停止所有运行中的服务容器,但不会删除它们。停止后可以通过 docker compose start 恢复服务。

bash 复制代码
docker compose stop
3.7 docker compose build

手动构建镜像。如果在 docker-compose.yml 中使用了 build 选项,可以使用此命令来重新构建镜像。

bash 复制代码
docker compose build

4. 总结

Docker Compose 是一个功能强大的工具,适用于本地开发、测试和多容器应用的管理。通过一个简单的 docker-compose.yml 文件,你可以定义、构建并管理多个容器应用,避免了手动管理多个 Docker 容器的复杂性。本文介绍了如何配置 Docker Compose 文件、使用流程和常用命令,帮助你更高效地使用 Docker Compose 来部署和管理容器化应用。

常见的 Docker Compose 命令如 updownpslogs 等,可以帮助你快速管理和调试多容器应用。此外,Compose 的强大功能还包括服务依赖、环境变量、卷管理等,极大地提升了容器化应用的开发效率和可维护性。

相关推荐
苹果醋32 分钟前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
两张不够花4 分钟前
Jenkins 持续集成部署
运维·jenkins
码农土豆22 分钟前
PaddlePaddle飞桨Linux系统Docker版安装
linux·docker·paddlepaddle
Hacker_xingchen27 分钟前
天融信Linux系统安全问题
linux·运维·系统安全
丘狸尾28 分钟前
[cisco 模拟器] ftp服务器配置
android·运维·服务器
黑客老陈36 分钟前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
ghostwritten1 小时前
Linux Swap: 深入解析 mkswap, mkfs.swap, 和 swapon
linux·运维·服务器
我是唐青枫1 小时前
Linux xargs 命令使用教程
linux·运维·服务器
gallonyin1 小时前
【监控】夜莺监控系统各环节资源压力分析
运维·服务器
未知陨落1 小时前
Linux常用命令
linux·运维·服务器