速通Docker === Docker Compose

81 阅读3分钟

速通Docker === Docker Compose

目录

[TOC]

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,可以更高效地管理多容器应用程序,简化开发和部署流程。