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: nginx
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    networks:
      - webnet

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    networks:
      - webnet

networks:
  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 的强大功能还包括服务依赖、环境变量、卷管理等,极大地提升了容器化应用的开发效率和可维护性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GIT与github的链接(同步本地与远程仓库)

1.官网下载GIT Git - 安装 Git 2.GIT生成密钥 2.1 打开gitbash配置邮箱与用户名&#xff08;非初次使用GIT跳过这一步&#xff09; git config --global user.name "你的用户名" git config --global user.email "你的邮箱" 2.2 生成ssh密匙 1&#xff0…

从虚拟到现实:AI与AR/VR技术如何改变体验经济?

引言&#xff1a;体验经济的崛起 在当今消费环境中&#xff0c;产品与服务早已不再是市场竞争的唯一焦点&#xff0c;能够提供深刻感知和独特体验的品牌&#xff0c;往往更能赢得消费者的青睐。这种转变标志着体验经济的崛起。体验经济不仅仅是简单的买卖行为&#xff0c;而是通…

利用Python爬虫速卖通按关键字搜索AliExpress商品

在当今互联网时代&#xff0c;数据的价值不言而喻&#xff0c;尤其是在电子商务领域。对于从事市场研究、数据分析或者个人项目开发的人士来说&#xff0c;能够从电商平台如速卖通&#xff08;AliExpress&#xff09;获取商品数据是一项非常有用的技能。Python以其简洁明了的语…

qt QZipWriter详解

1、概述 QZipWriter是Qt框架中用于创建ZIP文件的类。它允许开发者将多个文件和目录压缩成一个ZIP文件&#xff0c;支持多种压缩算法&#xff0c;并且易于集成到现有的Qt项目中。通过QZipWriter&#xff0c;开发者可以轻松实现文件的压缩、管理压缩包中的文件等功能。 需要注意…

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; Index代码 import { authen…

【Java】Jackson序列化案例分析

1.Jackson介绍 Jackson 是一个流行的 Java 库&#xff0c;用于处理 JSON 数据。它提供了高效的序列化和反序列化功能&#xff0c;能够将 Java 对象转换为 JSON 格式&#xff0c;反之亦然。 它由 FasterXML 开发和维护。Jackson 的设计目标是提供高效、灵活且易于使用的 JSON 处…

Java反射学习(2)(“反射“机制获取构造方法及内部信息(Constructor类))

目录 一、"Class"对象实例化的常见三种方式以及使用时机。 &#xff08;1&#xff09;源代码(编写)阶段——使用全限定类名.forName()。 &#xff08;2&#xff09;加载阶段——使用类名.class。 &#xff08;3&#xff09;运行阶段——使用对象.getClass()。 二、Ja…

洛谷 P1595 信封问题 C语言dp

题目描述 某人写了 n 封信和 n 个信封&#xff0c;如果所有的信都装错了信封。求所有信都装错信封共有多少种不同情况。 输入格式 一个信封数 n&#xff0c;保证 n≤20。 输出格式 一个整数&#xff0c;代表有多少种情况。 输入输出样例 输入 #1 2 输出 #1 1 输入 #2 3 输…

【LuaFramework】服务器模块相关知识

目录 一、客户端代码 二、本地服务器代码 三、解决服务器无法多次接收客户端消息问题 一、客户端代码 连接本地服务器127.0.0.1:2012端口&#xff08;如何创本地服务器&#xff0c;放最后说&#xff09;&#xff0c;连接成功后会回调 协议号Connect是101&#xff0c;其他如下…

解决Ascend上vllm运行时出现urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED]

背景 尝试使用vllm模型&#xff0c;脚本代码如下&#xff1a; from vllm import LLM, SamplingParamsprompts ["Hello, my name is","The president of the United States is","The capital of France is","The future of AI is", …

【卷积神经网络】常用评价指标总结

评估指标 概述 该评价指标适合分类任务与目标检测&#xff0c;主要用于评估模型的性能。该文章对相关指标进行总结&#xff0c;同时对输出的图片进行学习分析 混淆矩阵的组成 TP&#xff08;True Positives&#xff0c;真正例&#xff09;&#xff1a;实际为正例&#xff0c;…

HarmonyOS NEXT 的技术发展和市场趋势:打造1+8+N的万物互联新世界

随着5G、AI、物联网等技术的飞速发展&#xff0c;全球智能设备和操作系统的竞争也日益激烈。在这一背景下&#xff0c;华为推出的HarmonyOS NEXT正逐渐成为智能设备生态中一个重要的参与者&#xff0c;其独特的18N战略布局以及跨设备、跨平台的互联互通理念&#xff0c;正在塑造…

免费 IP 归属地接口

免费GEOIP&#xff0c;查询IP信息&#xff0c;支持IPV4 IPV6 ,包含国家地理位置&#xff0c;维度&#xff0c;asm,邮编 等&#xff0c;例如 例如查询1.1.1.1 http://geoip.91hu.top/?ip1.1.1.1 返回json 对象

以太网通信--读取物理层PHY芯片的状态

PHY芯片通过MDIO接口进行读写&#xff0c;框图如下所示&#xff1a; 原理很简单&#xff0c;就是按照时序将PHY芯片的指定寄存器信息读出或者写入。 MDC时钟需要输出到PHY芯片&#xff0c;一般不低于80MHz。 MDIO是双向接口&#xff0c;FPGA读出状态信息时为输入&#xff0c;FP…

Docker服务发现新纪元:探索Consul的无限魅力

作者简介&#xff1a;我是团团儿&#xff0c;是一名专注于云计算领域的专业创作者&#xff0c;感谢大家的关注 •座右铭&#xff1a; 云端筑梦&#xff0c;数据为翼&#xff0c;探索无限可能&#xff0c;引领云计算新纪元个人主页&#xff1a;团儿.-CSDN博客 目录 前言&…

OpenHarmony-6.IPC/RPC组件

IPC/RPC组件机制 1.基本概念 IPC&#xff1a;设备内的进程间通信&#xff08;Inter-Process Communication&#xff09;。 RPC&#xff1a;设备间的进程间通信&#xff08;Remote Procedure Call&#xff09;。 IPC/RPC用于实现跨进程通信&#xff0c;不同的是前者使用Binder驱…

0.机顶盒晶晨s905l3b芯片--刷入第三方系统+安卓9 root教程+armbian写入EMMC教程

机顶盒s905l3b芯片刷第三方系统安卓9 root教程刷armbian写入EMMC教程 声明&#xff1a; 由于固件、软件、镜像等持续更新&#xff0c;本文仅代表当前所使用版本的流畅安装记录。行文略长&#xff0c;关键代码处会配以截图展示&#xff0c;请自行对比是否存在差异导致安装失败…

视频监控平台:Liveweb视频汇聚融合平台智慧安防视频监控应用方案

Liveweb是一款功能强大、灵活部署的安防视频监控平台&#xff0c;支持多种主流标准协议&#xff0c;包括GB28181、RTSP/Onvif、RTMP等&#xff0c;同时兼容海康Ehome、海大宇等厂家的私有协议和SDK接入。该平台不仅提供传统安防监控功能&#xff0c;还支持接入AI智能分析&#…

汇编语言学习

想要理解栈溢出的最基本原理&#xff0c;汇编和栈是必不可少的&#xff0c;不然想我之前学了也是白学&#xff0c;原理都不知道 一、准备 1.安装gcc sudo apt-get build-dep gcc 这里显示版本不对&#xff0c;我用的是国内镜像源&#xff0c;需要换一下配置 sudo nano /e…

“乡村探索者”:村旅游网站的移动应用开发

3.1 可行性分析 从三个不同的角度来分析&#xff0c;确保开发成功的前提是有可行性分析&#xff0c;只有进行提前分析&#xff0c;符合程序开发流程才不至于开发过程的中断。 3.1.1 技术可行性 在技术实现层次&#xff0c;分析了好几种技术实现方法&#xff0c;并且都有对应的成…