在现代应用开发和部署中,Docker已经成为不可或缺的工具。而 Docker Compose 作为Docker生态系统中的重要组成部分,能够帮助我们轻松管理和运行多容器应用程序。本文将详细介绍 Docker Compose 的安装方法、常用命令及其参数,帮助你快速上手并高效使用Docker Compose。
Docker Compose 主要是用于定义和运行多容器 Docker 应用程序。通过一个 docker-compose.yml
文件,你可以配置应用程序的服务、网络以及数据卷等,并使用一条命令启动所有服务。无论是开发、测试还是生产环境,Docker Compose 都能显著简化多容器应用的管理。
GitHub 下载地址:https://github.com/docker/compose/tags
如果下载缓慢,可以复制链接地址到迅雷进行下载,这样会快很多。
链接地址:https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod a+x /usr/local/bin/docker-compose
示例:
[root@node3 tool]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@node3 tool]# chmod a+x /usr/local/bin/docker-compose
[root@node3 tool]#
docker-compose -v
示例:
[root@node3 tool]# docker-compose -v
Docker Compose version v2.33.1
[root@node3 tool]#
docker-compose up
作用:启动服务
命令格式:
docker-compose up [选项]
常用参数:
-d
:后台运行--build
:启动前重新构建镜像--force-recreate
:强制重新创建容器示例:
docker-compose up -d
docker-compose down
作用:停止并删除服务
命令格式:
docker-compose down [选项]
常用参数:
-v
:删除数据卷--rmi all
:删除所有镜像示例:
docker-compose down
docker-compose down -v --rmi all
docker-compose down --rmi local
docker-compose restart
作用:重启服务
示例:
docker-compose restart
docker-compose ps
作用:查看服务状态
示例:
docker-compose ps
docker-compose logs
作用:查看服务日志
命令格式:
docker-compose logs [选项]
常用参数:
-f
:实时查看日志--tail n
:查看最后 n
行日志示例:
docker-compose logs
docker-compose logs web
docker-compose logs --tail 50 web
docker-compose build
作用:构建镜像
命令格式:
docker-compose build [选项]
常用参数:
--no-cache
:不使用缓存构建镜像示例:
docker-compose build
docker-compose exec
作用:在运行的容器中执行命令
示例:
docker-compose exec web bash
docker-compose pull
作用:拉取服务所需的镜像
示例:
docker-compose pull
docker-compose config
作用:验证 docker-compose.yml
文件的语法
示例:
docker-compose config
docker-compose rm
作用:删除已停止的 Compose 应用
命令格式:
docker-compose rm [选项] [服务]
常用参数:
-f
:指定使用的 Compose 配置文件,默认配置文件 docker-compose.yml
-v
:删除容器同时删除由 docker-compose.yml
文件定义的数据卷-a
:删除所有服务容器--rmi type
:删除镜像,删除构建镜像时产生的中间镜像和构建缓存(type
包括 all
(删除所有镜像)、local
(只删除本地镜像)、built
(只删除通过 docker-compose
构建的镜像))示例:
docker-compose rm
docker-compose rm -a
docker-compose rm -v
docker-compose -f test-compose.yml rm
docker-compose rm --rmi local
docker-compose.yml
配置详解docker-compose.yml
文件是 Docker Compose 的核心配置文件,用于定义和运行多容器应用程序。通过这个文件,可以配置服务、网络、卷等资源。
docker-compose.yml
文件采用 YAML 格式,通常包含:
version: '3' # 指定 Docker Compose 文件版本
services: # 定义服务
service1: # 服务名称
# 服务配置
service2:
# 服务配置
...
networks: # 定义网络
network1:
# 网络配置
...
volumes: # 定义卷
volume1:
# 卷配置
...
image
作用:指定服务使用的镜像
示例:
web:
image: nginx:latest
build
作用:指定构建镜像的 Dockerfile 路径
示例:
web:
build: ./app
ports
作用:映射容器端口到主机端口
示例:
web:
ports:
- "80:80"
- "3306:3306"
volumes
作用:挂载主机目录或卷到容器
示例:
web:
volumes:
- ./html:/usr/share/nginx/html
- db_data:/usr/local/mysql
environment
作用:设置环境变量
示例:
db:
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mysqldb
networks
作用:指定服务使用的网络
示例:
web:
networks:
- frontend
db:
networks:
- backend
healthcheck
作用:定义健康检查
示例:
web:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 10s
timeout: 10s
retries: 5
restart
作用:设置容器重启策略
可选值:
no
:不重启(默认)always
:总是重启on-failure
:失败时重启unless-stopped
:除非手动停止,否则总是重启示例:
web:
restart: always
作用:定义自定义网络
示例:
networks:
frontend:
driver: bridge
backend:
driver: bridge
作用:使用已存在的外部网络
示例:
networks:
default:
external:
name: localnetwork
作用:定义自定义卷
示例:
volumes:
db_data:
driver: local
作用:使用已存在的外部卷
示例:
volumes:
db_data:
external: true
name: localvolume
version: '3'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
networks:
- frontend
depends_on:
- db
restart: always
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 10s
timeout: 10s
retries: 5
db:
image: mysql:5.7.43
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mysqldb
volumes:
- db_data:/usr/local/mysql
networks:
- backend
networks:
frontend:
driver: bridge
backend:
driver: bridge
volumes:
db_data:
driver: local
Docker Compose 是一个强大的工具,可以轻松管理多容器应用程序。通过掌握其基本用法,可以高效地管理和部署多容器应用程序!