Docker Compose 配置指南

目录

      • 1. Docker Compose 配置
        • 1.1 基本配置结构
        • 1.2 `docker-compose.yml` 的各部分
        • 1.3 常用配置选项
      • 2. Docker Compose 使用方法
        • 2.1 创建 Docker Compose 配置文件
        • 2.2 启动服务
        • 2.3 查看容器状态
        • 2.4 查看服务日志
        • 2.5 停止服务
        • 2.6 重新构建服务
      • 3. Docker Compose 常用命令
        • 3.1 `docker compose up`
        • 3.2 `docker compose down`
        • 3.3 `docker compose ps`
        • 3.4 `docker compose logs`
        • 3.5 `docker compose exec`
        • 3.6 `docker compose stop`
        • 3.7 `docker compose build`
      • 4. 总结

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个 docker-compose.yml 文件,你可以轻松地定义应用中的服务、网络、存储卷等资源,并用一个命令启动所有服务。Docker Compose 主要用于简化多容器应用的开发、测试和部署流程。

本文将详细介绍 Docker Compose 的配置、常用命令,以及使用方法的具体示例。

1. Docker Compose 配置

Docker Compose 的核心配置文件是 docker-compose.yml,它遵循 YAML 格式来定义应用中的多个服务。

1.1 基本配置结构

一个最基础的 docker-compose.yml 文件结构通常包括以下部分:

services:# 定义服务web:image: nginx  # 使用官方 nginx 镜像ports:- "8080:80"  # 将宿主机的8080端口映射到容器的80端口volumes:- ./html:/usr/share/nginx/html  # 将本地html文件夹挂载到容器的html目录networks:- webnet  # 使用名为 webnet 的网络db:image: mysql:5.7  # 使用 MySQL 镜像environment:MYSQL_ROOT_PASSWORD: example  # 设置MySQL root 密码networks:- webnet  # 使用同样的网络networks:webnet:  # 定义 webnet 网络
1.2 docker-compose.yml 的各部分
  • services:定义服务,每个服务可以有一个容器。每个服务都可以使用一个 Docker 镜像,或者从 Dockerfile 构建。
  • image:指定 Docker 镜像,通常是公开镜像(如 nginx),或者是自己构建的镜像。
  • ports:定义端口映射,"宿主机端口:容器端口"
  • volumes:挂载数据卷,将宿主机的文件夹或文件挂载到容器内部,常用于持久化存储数据。
  • environment:设置环境变量,通常用于传递配置参数。
  • networks:定义和配置 Docker 网络。可以指定多个服务共享同一个网络。
1.3 常用配置选项
  • build:从 Dockerfile 构建镜像。

    build:context: ./app  # 指定 Dockerfile 目录
    
  • depends_on:服务之间的依赖关系,确保容器启动顺序。

    depends_on:- db
    
  • restart:容器退出后的重启策略。

    restart: always  # 始终重启容器
    

2. Docker Compose 使用方法

2.1 创建 Docker Compose 配置文件

首先,创建一个 docker-compose.yml 文件,定义你的应用程序中所需的服务。

  1. 在你的项目根目录下,创建一个 docker-compose.yml 文件。
  2. 在文件中定义所有的服务,如 Web 服务、数据库服务等。

例如,创建一个包含 nginxMySQL 的示例文件:

services:web:image: nginxports:- "8080:80"volumes:- ./html:/usr/share/nginx/htmlnetworks:- webnetdb:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: examplenetworks:- webnetnetworks:webnet:
2.2 启动服务
  1. docker-compose.yml 文件所在的目录,打开命令行并运行以下命令:

    docker compose up
    

    该命令会启动所有定义在 docker-compose.yml 中的服务。你可以通过浏览器访问 http://localhost:8080 来查看 Nginx 服务是否已经启动。

  2. 如果你希望容器在后台运行,可以使用 -d 参数:

    docker compose up -d
    

    这样,Docker Compose 将会在后台启动所有服务。

2.3 查看容器状态

可以使用以下命令查看正在运行的容器状态:

docker compose ps

输出示例如下:

       Name                     Command               State           Ports         
------------------------------------------------------------
myapp_db_1          docker-entrypoint.sh mysqld   Up      3306/tcp
myapp_web_1         /docker-entrypoint.sh nginx    Up      0.0.0.0:8080->80/tcp
2.4 查看服务日志

可以查看各个服务的日志信息:

docker compose logs

或者查看特定服务的日志,例如查看 web 服务:

docker compose logs web
2.5 停止服务

停止并删除所有服务容器及其相关资源:

docker compose down

如果只想停止服务,而不删除容器,可以使用:

docker compose stop
2.6 重新构建服务

如果修改了 Dockerfiledocker-compose.yml 中的某些内容,可以使用 --build 参数重新构建镜像:

docker compose up --build

这样会重新构建服务并启动容器。


3. Docker Compose 常用命令

3.1 docker compose up

启动和运行多容器服务。通过 docker-compose.yml 文件来启动、停止容器。

docker compose up

常用参数:

  • -d:后台运行容器。
  • --build:在启动之前构建镜像。
  • --force-recreate:强制重新创建容器。
3.2 docker compose down

停止并删除所有容器、网络、卷等资源。

docker compose down

常用参数:

  • --volumes-v:同时删除数据卷。
  • --remove-orphans:删除与当前服务不相关的容器。
3.3 docker compose ps

查看当前运行的容器和服务状态。

docker compose ps

输出包括每个容器的名称、状态、端口等信息。

3.4 docker compose logs

查看服务日志。默认情况下,显示所有服务的日志。

docker compose logs

查看特定服务的日志:

docker compose logs <service-name>

例如,查看 web 服务的日志:

docker compose logs web
3.5 docker compose exec

在正在运行的容器内执行命令。比如,进入 web 容器的 bash 环境:

docker compose exec web bash
3.6 docker compose stop

停止所有运行中的服务容器,但不会删除它们。停止后可以通过 docker compose start 恢复服务。

docker compose stop
3.7 docker compose build

手动构建镜像。如果在 docker-compose.yml 中使用了 build 选项,可以使用此命令来重新构建镜像。

docker compose build

4. 总结

Docker Compose 是一个功能强大的工具,适用于本地开发、测试和多容器应用的管理。通过一个简单的 docker-compose.yml 文件,你可以定义、构建并管理多个容器应用,避免了手动管理多个 Docker 容器的复杂性。本文介绍了如何配置 Docker Compose 文件、使用流程和常用命令,帮助你更高效地使用 Docker Compose 来部署和管理容器化应用。

常见的 Docker Compose 命令如 updownpslogs 等,可以帮助你快速管理和调试多容器应用。此外,Compose 的强大功能还包括服务依赖、环境变量、卷管理等,极大地提升了容器化应用的开发效率和可维护性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Taro小程序开发性能优化实践

我们团队在利用Taro进行秒送频道小程序的同时&#xff0c;一直在探索性能优化的最佳实践。随着需求的不断迭代&#xff0c;项目中的性能问题难免日积月累&#xff0c;逐渐暴露出来影响用户体验。适逢双十一大促&#xff0c;我们趁着这个机会统一进行了Taro性能优化实践&#xf…

手动修改nginx-rtmp模块,让nginx-rtmp-module支持LLHLS

文章目录 1. 背景2. 开发环境搭建2.1 ffmpeg在ubuntu上安装2.2 nginx-rtmp-module在ubuntu上安装2.3 安装vscode环境2. 修改nginx-rtmp-module2.1 主要更新内容2.2 新增配置项2.3 代码更新3. LLHLS验证方法3.1 配置验证3.2 功能验证4. 注意事项5. 已知问题6. 后续计划1. 背景 …

Git的简介

文章目录 一.Git是什么二.核心概念三.工作流程四.Git的优势 下载Git 推荐官网下载 官网地址 一.Git是什么 Git是一个分布式版本控制系统&#xff0c;用于跟踪文件的变化并协调多人对同一项目的开发工作。它就像是一个时光机器&#xff0c;能够记录文件在不同时间点的状态&…

springboot471基于协同过滤算法商品推荐系统(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装协同过滤算法商品推荐系统软件来发挥其高效地信息处理的作用…

进程间关系与守护进程

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 进程间关系与守护进程 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. 进程组 什…

【NLP 16、实践 ③ 找出特定字符在字符串中的位置】

看着父亲苍老的白发和渐渐老态的面容 希望时间再慢一些 —— 24.12.19 一、定义模型 1.初始化模型 ① 初始化父类 super(TorchModel, self).__init__()&#xff1a; 调用父类 nn.Module 的初始化方法&#xff0c;确保模型能够正确初始化。 ② 创建嵌入层 self.embedding n…

javaEE-多线程编程-3

目录 java 常见的包 : 回调函数: 什么是线程: 第一个线程: 验证多线程执行: 内核: 调用sleep()方法: 执行结果分析: 线程创建的几种方式: 1.继承Thread类,重写run()方法. 2.实现Runnable接口,重写run()方法. 3.继承Thread类,重写run()方法.但使用匿名内部类 4.实现…

怎么在idea中创建springboot项目

最近想系统学习下springboot&#xff0c;尝试一下全栈路线 从零开始&#xff0c;下面将叙述下如何创建项目 环境 首先确保自己环境没问题 jdkMavenidea 创建springboot项目 1.打开idea&#xff0c;选择file->New->Project 2.选择Spring Initializr->设置JDK->…

设计模式期末复习

一、设计模式的概念以及分类 是一套被反复使用&#xff0c;多数人知晓&#xff0c;经过分类编目&#xff0c;代码设计经验的总结&#xff0c;描述了在软件设计的过程中不断重复发生的问题&#xff0c;以及该问题的解决方案&#xff0c;他是解决特定问题的一系列套路&#xff0c…

哔哩哔哩视频能保存到本地吗

哔哩哔哩&#xff08;B站&#xff09;视频可以保存到本地&#xff0c;但需要根据具体情况选择方法。以下是一些常见的方式&#xff1a; 使用B站客户端的离线功能 B站官方客户端&#xff08;移动端或PC端&#xff09;提供了离线下载功能&#xff0c;适用于已开通权限的视频。 离…

FreeMarker语法

1. 查找转移 <#function getSubSlot x > <#return (x) ? switch( "1", "L", "2", "R", "" )> </#function> 2. 转换数字 ?number ${mergedMap[placement.sequence].material.subs…

OCR(五)linux 环境 基于c++的 paddle ocr 编译【CPU版本 】

1. 下载 下载opencv4.10 2. 编译opencv 2.1 安装依赖库 sudo apt install -y g ++ sudo apt install -y cmake sudo apt install -y make sudo apt install -y wget sudo apt install -y unzip sudo apt-get install build-essential libgtk2.0-dev libgtk-3-devlibavcodec-…

SQL Server 批量插入数据的方式汇总及优缺点分析

在 SQL Server 中,批量插入数据是非常常见的操作,尤其是在需要导入大量数据时。以下是几种常用的批量插入数据的方式: 1. 使用 INSERT INTO ... VALUES • 特点:适用于少量数据插入。 • 优点:简单易用。 • 缺点:不适合大量数据插入,性能较差。 • 示例:…

对于其他管理的理解(下)

信息系统项目管理师的论文还有可行性分析、安全管理、测试管理、招投标管理等 可行性分析(医生的手术前检查) 1. 明确目标&#xff1a;确定手术的必要性 知识点&#xff1a; 在项目启动阶段&#xff0c;需要明确项目的目的、目标和需求&#xff0c;确定是否有必要开展项目。这…

Linux增加回收站功能

功能简介 rm命令是非常危险的命令&#xff0c;为了防止用户误删文件&#xff0c;所以我们在执行rm命令时将文件添加到回收站&#xff0c;防止误删文件。 相关环境变量 名称描述TRASH_DIR 回收站目录&#xff0c;默认为/Recycle_Bin 文件命名规则 文件名生成格式为 原始文件名…

Github——网页版上传文件夹

第一步&#xff1a;创建一个新的仓库或进入已存在的仓库页面 第二步&#xff1a;点进对应的文件夹下&#xff0c;然后 点击 “Upload files” 第三步&#xff1a;将文件夹拖拽到上传区域 打开资源管理器&#xff0c;将要上传的文件夹从计算机中拖拽到上传区域。 注意&#xf…

高级的SQL查询技巧有哪些?

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于高级SQL查询技巧方面的相关内容&#xf…

FastStone 10.x 注册码

简介 FastStone Capture是一款经典好用的屏幕截图软件&#xff0c;在屏幕截图领域具有广泛的应用和众多优势。 软件基本信息 FastStone Capture体积小巧&#xff0c;占用内存少&#xff0c;这使得它在运行时不会给计算机系统带来过多的负担&#xff0c;即使在配置较低的电脑…

数据库 SQL 常用语句全解析

数据库 SQL 常用语句全解析 在数据库领域&#xff0c;SQL&#xff08;Structured Query Language&#xff09;作为标准语言&#xff0c;掌控着数据的查询、插入、更新与删除等关键操作。无论是新手入门数据库&#xff0c;还是经验丰富的开发者日常工作&#xff0c;熟练掌握 SQ…

ADB在浏览器中的革命:ya-webadb项目解析及新手指南

ADB在浏览器中的革命&#xff1a;ya-webadb项目解析及新手指南 ya-webadb ADB in your browser [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/ya/ya-webadb ya-webadb是一个创新的开源项目&#xff0c;它将Android调试桥(ADB)的功能带入了基于Chromium的浏览器…