# Docker 进阶

# 参考文档

# 快速使用

常用命令文档 (opens new window)

mkdir myapp && cd myapp 创建项目目录,然后再创建 docker-compose.yml 配置文件,后续这个项目所有的文件都存放到项目目录下。

  • docker-compose.yml 文件名是默认的,也可以用 -f 指定其他文件,如:docker compose -f my-compose.yaml up
  • 所有服务在同一个自定义网络中,可以直接用服务名互相通信(如 web 可直接连接 redis 主机名)

# 常用命令

  • docker compose up,启动所有服务(前台)
  • docker compose up -d,后台启动
  • docker compose down,停止并删除容器、网络等
  • docker compose ps,查看运行中的服务
  • docker compose logs web,查看 web 服务的日志
  • docker compose exec web sh,进入 web 容器执行命令

# Docker Compose

# 简介

我们知道通过 Dockerfile 可以很方便的定义一个单独的容器,但是一个项目中往往会包含多个容器(项目代码、Mysql、Redis...),多个容器配合才能完成一个应用。

Compose 就是用来编排这些容器的,它允许用户通过一个单独的 docker-compose.yml 模板文件定义一组关联容器构成一个应用。Compose 中有两个重要概念:

  • service 服务,一个应用实际的容器,也就是每一个微服务所在的容器,实际上可以包括多个运行相同镜像的容器实例。
  • project 项目,有多个服务组成的一个完整的应用项目。

Compose 默认管理的对象是项目,通过 Compose 可以使用 YML 文件来配置应用程序需要的所有服务。然后使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose v1 中的命令是 docker-compose [arg],Compose v2 中的命令是 docker compose [arg]

从 Docker Engine v20.10 开始,Docker 官方将 Compose 作为 CLI 插件集成到 Docker 中。默认 docker compose 命令在安装完 docker 就可以用。

# Compose 模板文件

详细参数解释可见文档 (opens new window)

目前主要使用到的 Compose 是 v3,所以这里默认使用 v3,其它版本可以去官方文档中查看。

Compose 默认使用文件名 docker-compose.yml。当然,也可以使用 -f 参数指定具体文件。

# 示例

定义 docker-compose.yml 放在工程根目录下,执行 docker compose up 这个命令来启动并运行整个应用程序。在工程根目录下执行 docker compose logs 将展示整个应用的日志信息,不同服务的日志将会以不同的颜色展示出来。

# docker-compose.yml 配置
version: '3'
services:
  compose-demo:
    build: .
    ports:
      - '7400:7401'
    # 这里意思是先运行 redis,再运行当前服务
    depends_on:
      - redis
  redis:
    image: redis
    ports:
      - '6374:6379'

# service - compose-demo 的 Dockfile
FROM openjdk:8
ADD /target/compose-demo-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT java -jar app.jar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 讨论区

由于评论过多会影响页面最下方的导航,故将评论区做默认折叠处理。

点击查看评论区内容,渴望您的宝贵建议~
Last Updated: 11/11/2025, 5:41:32 PM