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
相关推荐
小羊没烦恼!4 分钟前
TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
java·linux·运维·服务器·开发语言·数据库·mysql
启博网络8 分钟前
智慧档案库房工业组网:MR-1280 边缘大脑,实现温湿度、漏水、防火防盗设备智能联动教程
运维·网络·物联网·网络协议·网络安全·信息与通信·sdwan
海宇数据10 分钟前
零信任架构实战:基于海宇普通维保查询构建自动化二手车认证展厅车况质检档案网关
运维·人工智能·架构·自动化
众壹新能源科技11 分钟前
储能两充两放日收益增40%,但电池寿命缩短一半,怎么平衡
运维·人工智能·自动化
快乐的韭菜根根15 分钟前
SLURM配置服务器一
运维·服务器
Z21-X23 分钟前
云原生运维学习笔记:揭开虚拟化的硬核面纱,从底层架构到KVM实战
运维·笔记·学习·云原生
星恒随风27 分钟前
Linux线程同步与互斥(二):从日志系统与线程池设计,到线程安全单例、可重入函数和死锁原理
linux·运维·状态模式
mengge.cloud31 分钟前
1022小白入门教程(番外筑基)— nerdctl 容器基本功 + K8s 资源编写
linux·网络·云原生·容器·kubernetes·云计算·k8s
whyutianict_vv42 分钟前
HCIE-Datacom 考纲技术拆解:从 OSPF/BGP 到 VXLAN/Netconf 的知识地图
运维·网络
March.s1 小时前
Kubernetes 控制器深度指南:从 ReplicaSet 到 DaemonSet
云原生·容器·kubernetes