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