docker-compose文件的简介及使用

news/2024/11/28 10:10:00/

Docker Compose是Docker官方的开源项目,主要用于定义和运行多容器Docker应用。以下是对Docker Compose的详细介绍:

一、主要功能:

  • 容器编排:Docker Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project)。这个文件可以配置应用所需的所有服务,并通过一个单一命令来创建和启动所有服务。
  • 简化管理:Docker Compose简化了多容器应用的管理,使得开发、测试和部署变得更加容易和高效。
  • 服务依赖管理:通过配置服务依赖,可以确保服务按顺序启动。
  • 可重复的开发环境:Docker Compose能够确保在不同环境中(如开发、测试、生产)应用的行为一致。

二、核心概念

  • 服务(Service):服务是一个独立的容器实例,它可以包含具体的应用程序代码及其依赖。在docker-compose.yml文件中,服务通过“services”关键字来定义,并且可以为每个服务指定镜像、端口、环境变量、卷等配置。
  • 项目(Project):项目是由一组关联的服务定义组成的独立环境,通常由一个docker-compose.yml文件定义。

三、常用命令

  • 1,启动服务:使用docker-compose up命令可以启动所有服务。如果需要在后台运行,可以添加-d选项,即docker-compose up -d。
  • 2,停止服务:使用docker-compose down命令可以停止并删除所有服务、网络和卷(如果需要同时删除挂载的卷,可以添加–volumes选项)。
  • 3,构建服务:使用docker-compose build命令可以构建或重建服务的Docker镜像。
  • 4,查看日志:使用docker-compose logs命令可以查看服务的日志输出。如果需要实时跟踪日志,可以添加-f选项。同时,也可以查看特定服务的日志,例如docker-compose logs <service_name>。
  • 5,列出服务:使用docker-compose ps命令可以列出运行中的容器及其状态。
  • 6,重启服务:使用docker-compose restart命令可以重启服务容器
  • 7,扩展服务:使用docker-compose up --scale <service_name>=命令可以方便地扩展服务实例数量。
MacBook-Pro:dockercompose jd$ docker compose --helpUsage:  docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--all-resources              Include all resources, even those not used by services--ansi string                Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")--compatibility              Run compose in backward compatibility mode--dry-run                    Execute command in dry run mode--env-file stringArray       Specify an alternate environment file-f, --file stringArray           Compose configuration files(指定compose文件的路径和名称)--parallel int               Control max parallelism, -1 for unlimited (default -1)--profile stringArray        Specify a profile to enable--progress string            Set type of progress output (auto, tty, plain, json, quiet) (default "auto")--project-directory string   Specify an alternate working directory(default: the path of the, first specified, Compose file)-p, --project-name string        Project nameCommands:attach      Attach local standard input, output, and error streams to a service's running containerbuild       Build or rebuild servicesconfig      Parse, resolve and render compose file in canonical formatcp          Copy files/folders between a service container and the local filesystemcreate      Creates containers for a servicedown        Stop and remove containers, networks(停止并移除所有所有容器)events      Receive real time events from containersexec        Execute a command in a running container(在一个运行的容器中执行命令)images      List images used by the created containerskill        Force stop service containerslogs        View output from containers (查看指定容器的日志)ls          List running compose projectspause       Pause servicesport        Print the public port for a port bindingps          List containers(列出所有的容器)pull        Pull service imagespush        Push service imagesrestart     Restart service containersrm          Removes stopped service containersrun         Run a one-off command on a servicescale       Scale services start       Start servicesstats       Display a live stream of container(s) resource usage statisticsstop        Stop servicestop         Display the running processesunpause     Unpause servicesup          Create and start containers(创建并启动所有容器)version     Show the Docker Compose version informationwait        Block until containers of all (or specified) services stop.watch       Watch build context for service and rebuild/refresh containers when files are updatedRun 'docker compose COMMAND --help' for more information on a command.

四、文件结构

  • Docker Compose的配置文件默认为docker-compose.yml,该文件定义了多个有依赖关系的服务及每个服务运行的容器。以下是一个典型的docker-compose.yml文件示例:
version: '3.8'services:# MySQL 数据库服务mysql:image: mysql:5.7  # 使用官方的 MySQL 镜像,版本为 5.7container_name: my_mysql	# 创建mysql容器名称environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: root_password  # 设置 root 用户的密码MYSQL_DATABASE: mydb  # 创建一个名为 mydb 的数据库MYSQL_USER: myuser  # 创建一个名为 myuser 的用户MYSQL_PASSWORD: mypassword  # 设置 myuser 用户的密码volumes:- "./mysql/data:/var/lib/mysql"	# 挂在的数据目录- "./mysql/conf:/etc/mysql/confi.d"- "./mysql/init:/docker-entrypoint-initdb.d"ports:- "3306:3306"  # 将宿主机的 3306 端口映射到容器的 3306 端口networks:- my_net		# 创建的桥接网络
aipro:build:			# 根据Dockerfile文件构建镜像context: .dockerfile: Dockerfile	# 服务后端创建一Dockerfile文件编辑container_name: aiproports:- "8080:8080" # 将宿主机的 8080 端口映射到容器的 8080 端口(根据你的后端应用配置调整)networks:- my_netdepends_on:- my_mysql  # 确保 MySQL 服务先启动# Nginx 服务,用于反向代理前端和后端
nginx:image: nginx:latest  # 使用官方的 Nginx 镜像,版本为 latestcontainer_name: my_nginxvolumes:- "./nginx/nginx.conf:/etc/nginx/nginx.conf"  # 使用自定义的 Nginx 配置文件- "./nginx/frontend/dist:/usr/share/nginx/html"  # 将前端应用的静态文件映射到 Nginx 的默认根目录ports:- "80:80"  # 将宿主机的 80 端口映射到容器的 80 端口depends_on:- aipro  # 确保后端服务先启动(如果 Nginx 需要代理到后端)networks:- my_net
networks:my_net:name: aipro
# volumes:# my-data:  #定义了一个命名卷my-data用于持久化数据

五、应用场景

Docker Compose非常适合用于需要组合使用多个容器进行开发的场景,如微服务架构、全栈应用开发等。通过Docker Compose,可以轻松地定义、启动和管理多个容器化的服务,从而简化开发、测试和部署流程。

综上所述,Docker Compose是一个强大的工具,它可以帮助用户更方便地管理和部署多容器Docker应用。


http://www.ppmy.cn/news/1550585.html

相关文章

unity中:Unity 中异步与协程结合实现线程阻塞的http数据请求

在 Unity 开发中&#xff0c;将协程与 C# 的 async/await 机制结合&#xff0c;可以显著提高代码的可读性与维护性&#xff0c;并且支持返回值。 异步与协程结合在数据请求中的优势 提高代码可读性&#xff1a; 与传统协程相比&#xff0c; async/await 更接近同步逻辑&#xf…

【linux】Linux内核和应用层常见的通信方式及举例整理

Linux内核和应用层常见的通信方式 系统调用&#xff08;System Calls&#xff09; 应用程序通过系统调用与内核进行交互。这是最基本的通信方式&#xff0c;应用程序可以通过系统调用请求内核提供的服务&#xff0c;如文件操作、进程控制等。 proc文件系统 /proc文件系统提供…

hping3工具介绍及使用方法

文章目录 hping3 的特点hping3 的常见功能1. 发送 ICMP 请求&#xff08;类似 ping&#xff09;2. TCP SYN 扫描3. SYN 洪水攻击4. TCP ACK 扫描5. UDP 洪水攻击6. 模拟 IP 欺骗7. 自定义数据包8. ICMP 路由追踪9. Ping 洪水攻击 总结 hping3 是一个强大的命令行网络工具&#…

如何评估爬虫获取的数据质量?

评估爬虫获取的数据质量是一个多维度的过程&#xff0c;涉及到数据的完整性、准确性、时效性等多个方面。以下是一些关键的评估标准和方法&#xff1a; 数据完整性评估&#xff1a; 缺失值处理&#xff1a;检查数据集中是否存在缺失值&#xff0c;并采取适当的方法进行处理&…

研0找实习【学nlp】14--BERT理解

​​​​​以后做项目&#xff0c;一定要多调查&#xff0c;选用不同组合关键词多搜索&#xff01; BERT论文解读及情感分类实战_bert模型在imdb分类上的准确率已经到达了多少的水平-CSDN博客 【深度学习】-Imdb数据集情感分析之模型对比&#xff08;4&#xff09;- CNN-LSTM…

VsCode 插件推荐(个人常用)

VsCode 插件推荐&#xff08;个人常用&#xff09;

欢迪迈手机商城:SpringBoot框架的持续集成

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本欢迪迈手机商城就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…

心情追忆:构建支付模块的五个基本接口设计

之前&#xff0c;我独自一人开发了一个名为“心情追忆”的小程序&#xff0c;旨在帮助用户记录日常的心情变化及重要时刻。我从项目的构思、设计、前端&#xff08;小程序&#xff09;开发、后端搭建到最终部署。经过一个月的努力&#xff0c;通过群聊分享等方式&#xff0c;用…