速通Docker === Docker Compose
目录
Docker Compose 简介
Docker Compose 常用命令
使用 Docker Compose 启动 WordPress
普通启动方式(使用 Docker 命令)
使用 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 | 设置容器的重启策略(如 always 、on-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,可以更高效地管理多容器应用程序,简化开发和部署流程。