Docker-Compose环境配置&使用

简介

Docker-Compose,是基于 Docker 容器的指令编排技术,当你的某个应用需要用到数个容器时,可以使用 Docker-Compose,一键拉取、启动所有所需的 Docker 容器,非常方便

简单来说,Docker 的命令是作用到单个 Docker 容器的,Docker-Compose 是作用到一批 Docker 容器的

本文介绍如何配置 Docker-Compose 环境

Windows

Windows 系统最简单的方式,是下载一个 Dockers-Desktop(https://docs.docker.com/desktop/setup/install/windows-install/

安装该软件,会在 Windows 系统中装一个 Linux 子系统(wsl),在这里面就配备了 Docker-Compose 环境

如下

Linux

配置 Docker-Compose 的前提,是需要有 Docker 环境,安装 Docker 参考下面这篇博客

敲下面的命令,下载 Docker-Compose 命令,并放到环境变量中

bash 复制代码
curl -SL https://github.com/docker/compose/releases/download/v5.1.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

设置可执行权限

bash 复制代码
chmod +x /usr/local/bin/docker-compose

这就装好了,试下

bash 复制代码
docker-compose -v

如下

另外

以上的单独的 Docker-Compose 是旧版的使用方式,docker-compose 命令作为单独的可执行程序进行配置

新版本的 Docker,内置了 Docker-Compose,敲下面的命令验证你的 Docker 是否有 Docker-Compose 环境

bash 复制代码
docker compose version

如下

使用

接下来使用一波,并整理一下 Docker-Compose 的一些命令

以博主之前介绍过的个人博客网站 Halo 为例(官网:https://docs.halo.run/getting-started/install/docker-compose

将 Halo 提供的 Docker-Compose 文件(docker-compose.yml)下载下来

该文件中定义了所需要的容器、容器使用的镜像和版本、挂载的数据卷、开放的端口、环境变量等信息

这就是所谓的编排

bash 复制代码
version: "3"

services:
  halo:
    image: registry.fit2cloud.com/halo/halo-pro:2.23
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    environment:
      # JVM 参数,默认为 -Xmx256m -Xms256m,可以根据实际情况做调整,置空表示不添加 JVM 参数
      - JVM_OPTS=-Xmx256m -Xms256m
    command:
      - --spring.r2dbc.url=r2dbc:pool:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
      # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改
      - --halo.external-url=http://localhost:8090/
  halodb:
    image: postgres:15.4
    restart: on-failure:3
    networks:
      halo_network:
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo

networks:
  halo_network:

在文件所在目录,敲 docker compose up -d 启动文件中配置的容器

docker compose ps 查看容器情况,文件中定义了两个容器,如下,都跑起来了

docker compose logs 查看容器的日志信息,和 docker 命令一样

访问一下,能访问到应用界面,没得问题

命令列表

以下命令,docker-compose 与 docker compose 可等同使用

bash 复制代码
# 拉取镜像
docker compose pull

# 启动
docker compose up -d

# 停止容器,并删除容器,不会删除挂载的数据卷
docker compose down

# 查看状态
docker compose ps

# 实时看日志,所有容器合并的日志
docker compose logs -f

# 服务名,即 docker-compose.yml 中定义的某个名称的容器
docker compose exec 服务名 bash

# 重启所有容器
docker compose restart
相关推荐
A-刘晨阳16 小时前
K8s之负载均衡
linux·运维·容器·kubernetes·负载均衡
学困昇16 小时前
彻底搞懂 Linux 基础 IO:文件描述符、重定向、dup2、缓冲区一次讲透!
linux·运维·服务器·开发语言·c++
xmlhcxr16 小时前
从 0 到 1 落地企业级 DevOps CI/CD 流水线:基于 GitLab+Jenkins+Harbor 的完整实践
运维·docker·gitlab·jenkins·harbor·devops
赋创小助手16 小时前
PCIe 8.0 要来了:1TB/s 带宽背后,AI 算力服务器正在进入“高速互联时代”
运维·服务器·人工智能
好赞科技16 小时前
深度对比2026年三款小程序商城精选推荐榜单,解决您的电商选择难题
大数据·运维·人工智能
贝锐17 小时前
贝锐向日葵:商用安卓设备大规模远程运维体系搭建指南
运维·远程控制
yyuuuzz17 小时前
国际云服务商运维常见问题梳理
运维·服务器·网络·github·aws
米高梅狮子17 小时前
11.Quota and Limits、健康检查和认证与授权
云原生·容器·架构·kubernetes·自动化
Flynt17 小时前
Dirtyfrag漏洞:我花了一下午搞清楚这个Linux内核提权漏洞到底在搞什么
linux·运维·安全
NINGMENGb17 小时前
舆情升温前的那30分钟:Infoseek系统如何改写公关游戏规则
大数据·运维·舆情监测·舆情监测系统