Docker Compose 使用指南
创作时间:
作者:
@小白创作中心
Docker Compose 使用指南
引用
1
来源
1.
https://www.cnblogs.com/wintersun/p/18187596
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,通过一个YAML文件来配置应用程序的服务,可以使用一个命令启动、停止和重启整个应用程序。本文将详细介绍Docker Compose的基本概念、常用命令、配置文件详解以及环境变量的使用等。
基本概念
- 容器 (container): Docker容器,其中运行着应用程序的一个实例。
- 镜像 (image): Docker镜像,用于创建容器的模板。
- Docker-Compose 文件:一个YAML文件,描述了应用程序的各个服务以及它们之间的关系、配置等信息。
Docker Compose 文件结构
- version: Docker-Compose文件的版本。
- services: 定义了各个服务,每个服务都有自己的配置项,如镜像、端口映射、依赖等。
- networks: 定义了应用程序使用的网络,可以自定义网络以控制服务之间的通信。
- volumes: 定义了应用程序使用的卷,用于持久化数据或与主机共享文件。
常用命令
docker compose up: 启动容器docker compose up -d: 后台运行容器docker compose down: 停止容器docker compose down -v: 删除容器和卷docker compose ps: 查看容器状态docker compose logs: 查看容器日志docker compose logs -f: 跟随日志输出docker compose exec: 进入容器docker compose exec -it: 启动交互式终端docker compose build: 构建镜像docker compose rm: 删除容器docker compose stop: 停止容器docker compose start: 启动容器docker compose restart: 重启容器docker compose pull: 拉取镜像docker compose run: 运行一个临时容器docker compose config: 显示配置信息docker compose images: 列出镜像docker compose push: 推送镜像docker compose version: 查看版本信息
Docker Compose 配置
docker-compose的配置文件是一个YAML文件,用于定义和运行多容器Docker应用程序。通常命名为docker-compose.yml,它使用单一的YAML文件来定义多个容器的集合,以及它们之间的依赖关系和服务。以下是一份docker-compose.yml文件的配置模板,包含了常用配置项和解释:
version: '3' # 指定使用的 Docker Compose 文件格式版本,目前推荐使用 3.x 或更高
services: # 定义一个或多个服务
service1: # 服务名称
image: nginx:latest # 使用的 Docker 镜像,这里是 Nginx 的最新版本
# 或者使用构建指令来从 Dockerfile 构建镜像
build:
context: ./path/to/Dockerfile # Dockerfile 所在的目录
dockerfile: Dockerfile-alternative # 可选的 Dockerfile 名称,默认是 Dockerfile
# 容器启动时执行的命令,覆盖默认的命令
command:
- "nginx"
- "-g"
- "daemon off;" # 以数组形式指定,防止 shell 解析
ports: # 容器端口与主机端口映射
- "80:80" # 主机 80 端口映射到容器的 80 端口
volumes: # 数据卷挂载
- ./nginx.conf:/etc/nginx/nginx.conf:ro # 将主机上的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf,只读
- ./logs:/var/log/nginx # 将 logs 目录挂载到容器的 /var/log/nginx
environment: # 设置环境变量
- MYSQL_HOST=database # 可以引用其他服务,这里假设有一个名为 database 的服务
- MYSQL_PORT=3306
depends_on: # 服务启动顺序,这里表明 service1 依赖于 database 服务
- database
networks: # 定义网络
- my_network # 参与名为 my_network 的网络
service2: # 另一个服务示例
# ... 类似地定义其他服务
networks: # 定义网络
my_network: # 网络名称
driver: bridge # 网络驱动,通常是 bridge 模式
volumes: # 定义数据卷
nginx_logs: # 卷名称
使用环境变量
与docker run -e VARIABLE=VALUE ...相同
web:
environment:
- DEBUG=1
您可以选择不设置值并将环境变量从 shell 直接传递到容器。它的工作方式与docker run -e VARIABLE ...相同:
web:
environment:
- DEBUG
web:
environment:
- DEBUG=${DEBUG}
env_file属性允许您在 Compose 应用程序中使用多个.env文件。 它的工作方式与docker run --env-file=FILE ...相同:
web:
env_file:
- web-variables.env
额外的信息
env_file:
- path: ./default.env
required: true # default
- path: ./override.env
required: false
- 如果指定了多个文件,则它们将按顺序进行评估,可以覆盖先前文件中设置的值。
- 在
.env文件中声明的环境变量不能在 Compose 文件中单独再次引用。 - 如果同时使用
env_file和environment属性,则由environment设置的环境变量优先级更高。 - 在
env_file属性中指定的.env文件的路径是相对于 compose.yml 文件的位置的。 .env文件中的值可以通过使用docker compose run -e命令行来从命令行覆盖。- 如果使用
--env-file替换了另一个.env,则您的.env文件可以被另一个.env文件覆盖。 - 从 Docker Compose 版本 2.24.0 开始,您可以通过使用
required字段将.env文件设置为可选项。当required设置为false且.env文件丢失时,Compose 将静默忽略该条目。
Tips
- 使用 Docker-Compose 可以简化多容器应用程序的部署和管理,但需要注意容器之间的依赖关系和通信。
- 配置文件中的缩进必须使用空格,不能使用制表符。
- 可以使用环境变量来动态设置配置项,如数据库密码。
- 当你修改了
docker-compose.yml文件后,需要重新运行docker-compose up来使改动生效。 - 使用
docker-compose build仅重建镜像,而不启动容器。 - 使用
docker-compose restart重启容器。 - 记得清理不再需要的容器和镜像,以避免磁盘空间不足。
热门推荐
币圈止盈止损怎么设置?一文详解加密货币交易中的关键风险管理工具
电脑桌面部分文件不见了怎么恢复?五种方法,应对不同丢失情况
马桶水箱漏水原因及维修方法(探究马桶水箱漏水的原因以及如何进行维修)
近乎无敌的移植重制《女神异闻录3 Reload》微评测
失眠最快入睡10个方法
《原神》公开「捕获明光」概率为0.018%,原友:真正利好玩家的优化
老君山旅游攻略:交通住宿全指南及最佳游览路线推荐
什么是目的解释
有情人终成眷属——姬紫月与叶凡的爱情故事
可乐鸡翅,以其独特的口感,成为了许多家庭餐桌上的常客
齐长城:春秋战国时期重要的战略防御要地,劳动人民智慧的结晶
和恋爱中女生聊天的5个实用技巧
寒假开学前提前做好准备!“收心”亦要有节奏
哈医大团队揭示晚期动脉粥样硬化新机制,为心血管事件防控提供新思路
养脾食物有哪些?健脾胃最强的5种食物
微博如何一键清理粉丝,轻松打造高质量社交圈
人类与自然环境的关系,从崇拜、改造、征服自然到谋求协调发展
揭秘药用西红花:独特特性与栽培秘籍
同悲道是什么?简单介绍
限制未成年人消费:禁止充值消费的法律分析
苹果手机将“赔钱货”译成“Girl”涉歧视女性引争议
宝宝又红屁屁了?专家教你3招搞定尿布疹
2025年欧洲观赏北极光的六个最佳地点
《Pokémon Go》神秘盒子终极指南:如何获得Meltan及其闪亮变体
全麻手术次数多对大脑有危害吗
周杰伦新专辑即将面世,粉丝期待值爆表
三国纷争中的奇谋:魏延子午谷策略的深度解析
绝区零小黑好感度攻略
3003铝合金的性能特点与加工应用
VI设计规范与实践的深度探讨:打造品牌新形象