速通Docker === Docker Compose

目录

[Docker Compose 简介](#Docker Compose 简介)

[Docker Compose 常用命令](#Docker Compose 常用命令)

[使用 Docker Compose 启动 WordPress](#使用 Docker Compose 启动 WordPress)

[普通启动方式(使用 Docker 命令)](#普通启动方式(使用 Docker 命令))

[使用 Docker Compose 启动](#使用 Docker Compose 启动)

[Docker Compose 的特性](#Docker Compose 的特性)


Docker Compose 简介

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它通过 YAML 文件配置应用程序的服务、网络和卷,从而可以轻松地启动、停止和管理多个容器。

Docker Compose 常用命令

Docker Compose 提供了许多命令来管理多容器应用程序,以下是一些常用命令及其用法:

  • docker compose up -d :启动服务,-d 表示后台运行。
  • docker compose down :停止并删除服务,-v 可选参数用于删除卷。
  • docker compose ps:列出正在运行的服务。
  • docker compose logs :查看服务日志,-f 实时跟踪。
  • docker compose build :构建服务镜像,--no-cache 禁用缓存。
  • docker compose exec:在运行的容器中执行命令。
  • docker compose restart:重启服务。
  • docker compose stop:停止服务。
  • docker compose start:启动已停止的服务。
  • docker compose pull:拉取服务的镜像。
  • docker compose config:验证并查看配置文件。
  • docker compose run :运行一次性命令,--rm 完成后删除容器。

使用 Docker Compose 启动 WordPress

WordPress 是一个功能强大且广泛使用的开源内容管理系统(CMS),基于 PHP 和 MySQL 构建。它允许用户通过简单的安装和配置,快速搭建个人博客、企业网站、新闻门户等多种类型的网站。WordPress 提供了丰富的主题和插件生态系统,用户可以根据自己的需求轻松定制网站的外观和功能。

普通启动方式(使用 Docker 命令)

创建网络

docker network create blog

启动 MySQL 容器

docker run -d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=shiguang \
-e MYSQL_DATABASE=wordpress \
-v mysql-data:/var/lib/mysql \
-v /home/mysql/config:/etc/mysql/conf.d \
--restart always --name mysql \
--network blog \
mysql:8.0

启动 WordPress 容器

docker run -d -p 8080:80 \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=shiguang \
-e WORDPRESS_DB_NAME=wordpress \
-v wordpress:/var/www/html \
--restart always --name wordpress-app \
--network blog \
wordpress:latest

使用 Docker Compose 启动

|------------------|----------------------------------------|
| version | 指定 Docker Compose 文件版本(如 3.8)。 |
| services | 定义服务(容器)的集合。 |
| image | 指定服务使用的 Docker 镜像。 |
| container_name | 设置服务的容器名称。 |
| ports | 映射容器端口到宿主机端口(如 8080:80)。 |
| environment | 设置服务的环境变量(如 MYSQL_ROOT_PASSWORD)。 |
| volumes | 挂载卷到容器(如 mysql-data:/var/lib/mysql)。 |
| restart | 设置容器的重启策略(如 alwayson-failure)。 |
| depends_on | 定义服务依赖关系(如 depends_on: [mysql])。 |
| networks | 定义服务所属的网络。 |

编写 docker-compose.yml 文件

# 服务名称
name: myblog
# 服务
services:
  mysql:
    # 容器名称
    container_name: mysql
    # 镜像
    image: mysql:8.0
    # 端口
    ports:
      - "3306:3306"
    # 环境变量
    environment:
      - MYSQL_ROOT_PASSWORD=shiguang
      - MYSQL_DATABASE=wordpress
    # 挂载
    volumes:
      - mysql-data:/var/lib/mysql
      - /opt/docker/mysql/config:/etc/mysql/conf.d
    # 重启策略
    restart: always
    # 网络
    networks:
      - blog

  wordpress:
    # 镜像
    image: wordpress
    # 端口
    ports:
      - "8080:80"
    # 环境变量
    environment:  
      WORDPRESS_DB_HOST: mysql
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: shiguang
      WORDPRESS_DB_NAME: wordpress
    # 挂载
    volumes:
      - wordpress:/var/www/html
    # 重启策略
    restart: always
    # 网络
    networks:
      - blog
    # 依赖
    depends_on:
      - mysql

 
volumes:
 # 挂载
  mysql-data:
  wordpress:

networks:
  # 网络
  blog:

启动服务

切换到 docker-compose.yml 文件所在目录。

执行命令:docker compose up -d

指定文件名启动

如果文件名不是默认的 docker-compose.yml,可以使用 -f 指定文件名:

docker compose -f compose.yml up -d

Docker Compose 的特性

增量更新

修改 docker-compose.yml 文件后重新启动应用,只会触发修改项的重新启动。

数据安全

默认情况下,即使使用 docker-compose down 停止容器,所有挂载的卷也不会被移除。

如果需要删除容器的同时删除所有卷,可以使用以下命令:

docker compose down --rmi all -v

通过 Docker Compose,可以更高效地管理多容器应用程序,简化开发和部署流程。

相关推荐
云上艺旅36 分钟前
K8S学习之基础十五:k8s中Deployment扩容缩容
学习·docker·云原生·kubernetes·k8s
颜淡慕潇4 小时前
【K8S系列】Kubernetes中查看日志常见问题&解决方案
后端·云原生·容器·kubernetes
道法自然,人法天4 小时前
微服务的认识与拆分
微服务·云原生·架构
蝴蝶不愿意6 小时前
微服务拆分-拆分购物车服务
笔记·学习·微服务·云原生·架构
LaughingZhu8 小时前
Vercel Serverless
云原生·serverless
Linux运维老纪9 小时前
K8s 端口转发实战指南(Practical Guide to k8s Port Forwarding)
分布式·云原生·容器·kubernetes·运维开发
AWS官方合作商12 小时前
AWS原生架构下的服务器性能与成本平衡之道——海外业务云端实践
服务器·云原生·云计算·aws
weixin_7488770017 小时前
【2025年后端开发终极指南:云原生、AI融合与性能优化实战】
人工智能·云原生·性能优化
LCY1331 天前
k8s的配置文件说明
云原生·容器·kubernetes
encoding-console1 天前
k8s概念及k8s集群部署(Centos7)
云原生·容器·kubernetes·centos·部署