Docker入门系列——Docker-Compose

news2024/11/24 11:05:13
alt

Docker Compose 是 Docker 官方编排工具,用于定义和运行多容器 Docker 应用程序。它是一个轻量级的工具,用于快速配置和启动应用程序的不同服务。

Docker Compose 是什么

Docker Compose 最初是由 Docker 公司开发,并于 2014 年 6 月首次发布。它的前身是一个名为 fig 的开源项目,由 Piston Cloud Computing 开发。Docker 公司看到了 fig 的潜力,并决定将其集成到 Docker 生态系统中,从而诞生了 Docker Compose。Docker Compose 的设计目标是简化多容器应用程序的部署和管理,让用户能够通过一个简单的 YAML 文件来定义和管理整个应用程序。

这使得开发、测试和生产环境的一致性得以保证,同时也简化了应用程序的部署和管理过程。

Docker Compose 随着 Docker 的发展经历了多个版本的迭代。以下是一些重要的版本更新:

  • 1.x 版本:最初的版本,提供了基本的编排功能。
  • 2.x 版本:引入了对 Docker Engine API 的支持,允许更紧密地与 Docker Engine 集成。
  • 3.x 版本:引入了对服务依赖性的支持,允许定义服务之间的启动顺序。
  • 4.x 版本:引入了对环境变量和命令行参数的支持,使得配置更加灵活。
  • 5.x 版本:引入了对 Docker Stacks 的支持,允许在 Docker Swarm 模式下部署应用程序。

Docker Compose 使用方式

安装 Docker Compose

在大多数系统上,Docker Compose 可以作为 Python 的包来安装。以下是安装步骤:

# 安装pip(Python的包管理工具)
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

# 使用pip安装Docker Compose
pip install docker-compose

定义服务

创建一个名为 docker-compose.yml 的 YAML 文件来定义服务。以下是一个基本的 docker-compose.yml 文件示例:

version: '3'
services:
  web:
    image: "nginx:alpine"
    ports:
      - "80:80"
    volumes:
      - "web-data:/var/www"
  database:
    image: "postgres:latest"
    volumes:
      - "db-data:/var/lib/postgresql/data"

volumes:
  web-data:
  db-data:

在这个示例中,定义了两个服务:webdatabaseweb 服务使用 nginx:alpine 镜像,并映射端口 80。database 服务使用 postgres:latest 镜像。

常用 CLI 命令

以下是一些常用的 Docker Compose CLI 命令:

  1. 启动服务
docker-compose up

这个命令将启动所有服务,并在前台运行。

  1. 后台运行服务
docker-compose up -d

使用 -d 标志,服务将在后台运行。

  1. 停止服务
docker-compose down

这个命令将停止所有服务,并移除容器。

  1. 查看服务状态
docker-compose ps

这个命令将列出所有服务的状态。

  1. 重建服务
docker-compose up --build

这个命令将重建服务,并重新创建容器。

  1. 查看日志
docker-compose logs

这个命令将显示所有服务的日志。

  1. 进入容器
docker-compose exec [service-name] /bin/bash

这个命令将进入指定服务的容器,并启动一个 bash 会话。

  1. 停止单个服务
docker-compose stop [service-name]

这个命令将停止指定的服务。

  1. 启动单个服务
docker-compose start [service-name]

这个命令将启动指定的服务。

  1. 重启服务
docker-compose restart

这个命令将重启所有服务。

高级使用

Docker Compose 还支持许多高级功能,如环境变量、扩展、网络配置等。以下是一些高级用法示例:

  1. 环境变量
version: '3'
services:
  web:
    image: "nginx:alpine"
    env_file:
      - web.env

在这个示例中,web 服务将从 web.env 文件中读取环境变量。

  1. 扩展
version: '3'
services:
  web:
    image: "nginx:alpine"
    deploy:
      replicas: 3

在这个示例中,web 服务将被扩展为 3 个副本。这意味着Docker Compose将启动3个相同的web服务实例,它们将作为一个集群运行,以提供高可用性和负载均衡。

  1. 网络配置
version: '3'
services:
  web:
    image: "nginx:alpine"
    networks:
      - webnet
networks:
  webnet:

这段配置文件定义了一个名为web的服务,它将使用nginx:alpine镜像,并连接到一个名为webnet的网络。这个网络也是在同一个配置文件中定义的。这样的配置允许web服务在Docker容器中运行,并且可以通过webnet网络与其他服务进行通信。

结论

Docker Compose 是一个强大的工具,用于定义和运行多容器 Docker 应用程序。它简化了应用程序的部署和管理,提高了开发效率。

本文由 mdnice 多平台发布

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

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

相关文章

[运维][Nginx]Nginx学习(1/5)--Nginx基础

Nginx简介 背景介绍 Nginx一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】,是由伊戈尔赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.1.0版本。另外值得一…

GIN:逼近WL-test的GNN架构

Introduction 在 图卷积网络GCN 中我们已经知道图神经网络在结点分类等任务上的作用,但GIN(图同构神经网络)给出了一个对于图嵌入(graph embedding)更强的公式。 GIN,图同构神经网络,致力于解…

ReactPress与WordPress:一场内容管理系统的较量

ReactPress Github项目地址:https://github.com/fecommunity/reactpress WordPress官网:https://wordpress.org/ ReactPress与WordPress:一场内容管理系统的较量 在当今数字化时代,内容管理系统(CMS)已成为…

红日靶机(七)笔记

VulnStack-红日靶机七 概述 在 VulnStack7 是由 5 台目标机器组成的三层网络环境,分别为 DMZ 区、第二层网络、第三层网络。涉及到的知识点也是有很多,redis未授权的利用、laravel的历史漏洞、docker逃逸、隧道、代理的搭建、通达OA系统的历史漏洞、ms…

【bat】自动生成指定层级文件夹

🌅 一日之计在于晨,启航新程 ⭐ 本期特辑:自动生成指定层级文件夹 🏆 系列专题:BAT脚本工坊 文章目录 前言批处理脚本介绍脚本执行过程总结 前言 在日常的计算机使用过程中,我们经常需要创建文件夹来组织和…

45.第二阶段x86游戏实战2-hook监控实时抓取游戏lua

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…

ISAAC SIM踩坑记录--ROS2相机影像发布

其实这个例子官方和大佬NVIDIA Omniverse和Isaac Sim笔记5:Isaac Sim的ROS接口与相机影像、位姿真值发布/保存都已经有详细介绍了,但是都是基于ROS的,现在最新的已经是ROS2,这里把不同的地方简单记录一下。 搭建一个简单的场景&a…

MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并

MySQL技巧之跨服务器数据查询:基础篇-A数据库与B数据库查询合并 上一篇已经描述:借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的链接名: MY_ODBC_MYSQL 以…

问:MySQL主从同步的机制梳理?

MySQL主从复制是一种数据库复制技术,通过将一个MySQL数据库服务器(主节点)的数据复制到一个或多个其他MySQL数据库服务器(从节点),实现数据的自动同步。这种技术不仅提高了数据的可用性,还能通过…

物联网低功耗广域网LoRa开发(一):LoRa物联网行业解决方案

一、LoRa的优势以及与其他无线通信技术对比 (一)LoRa的优势 1、164dB链路预算 、距离>15km 2、快速、灵活的基础设施易组网且投资成本较少 3、LoRa节点模块仅用于通讯电池寿命长达10年 4、免牌照的频段 网关/路由器建设和运营 、节点/终端成本低…

【Linux】sudo make install 命令往系统中安装了什么 指定目录进行安装

前情提要 假如我们通过源码安装的方式,安装一个动态库,风格往往是这样的: # 克隆仓库 git clone https://github.com/xxx.git# 进入仓库目录 cd xxx编译 # ... 可能有一些校验代码完整性的sh命令# 构建 mkdir build cd build cmake ..# 编…

基于YOLOv5的人群密度检测系统设计与实现

大家好,本文将介绍基于改进后的YOLOv5目标检测模型,设计并实现人群密度检测系统。 使用YOLOv5的源代码,在此基础上修改和训练模型, 数据集选用crowdhuman数据集。对yolov5源码中的文件进行修改,更换主干网络、改进损失…

zabbix搭建钉钉告警流程

目录 zabbix实验规划 zabbix实验步骤 1 使用钉钉添加一个自定义的机器人 ​编辑2在zabbix-server上编写钉钉信息发送脚本,设置钉钉报警媒介 设置钉钉报警媒介​编辑​编辑 在添加消息模板​编辑​编辑​编辑 3设置动作条件 触发后的行为:重新添加一…

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5 1. 安装 Oracle Database 23ai2. 连接 Oracle Database 23c3. 重启启动后,手动启动数据库4. 重启启动后,手动启动 Listener5. 手动启动 Pluggable Database6. 自动启动 Pluggable Database7. 设置开…

vxe-table 3.10+ 进阶高级用法(一),根据业务需求自定义实现筛选功能

vxe-table 是vue中非常强大的表格的,公司项目中复杂的渲染都是用 vxe-table 的,对于用的排序。筛选之类的都能支持,而且也能任意扩展,非常强大。 默认筛选功能 筛选的普通用法就是给对应的列指定参数: filters&#…

机器学习笔记2 - 机器学习的一般流程

image.png 1、数据基本处理 数据集的划分 根据用途可将获取到的数据划分为训练集和测试集,有时还会有验证集。一般而言训练集用于训练模型,测试集用于测试模型的效果(泛化误差)。严格来讲,测试集的数据不能直接或间接&…

鸿蒙进阶篇-type、typeof、类

“在科技的浪潮中,鸿蒙操作系统宛如一颗璀璨的新星,引领着创新的方向。作为鸿蒙开天组,今天我们将一同踏上鸿蒙基础的探索之旅,为您揭开这一神奇系统的神秘面纱。” 各位小伙伴们我们又见面了,我就是鸿蒙开天组,下面让我们进入今…

log4j异常堆栈文件输出

目的:log4j异常堆栈关联到traceId一句话中,方便搜索 1、获取堆栈后一起打印 private void logException(Throwable t, ProceedingJoinPoint joinPoint) {if (this.printErrorStackSys) {StringWriter sw new StringWriter();PrintWriter pw new Print…

ReactPress:构建高效、灵活、可扩展的开源发布平台

ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎Star。 在当今数字化时代,内容管理系统(CMS)已成为各类网站和应用的核心组成部分。ReactPress,作为一款融合了现代Web开发多项先进技术的开…

【笔记】Springboo项目启动失败

application run failed org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name adviceMapper defined in file 原因是mybatisplus和springboot的版本不匹配 修改后: springboot mybatisplus 成功