当前位置: 首页 > news >正文

docker-compose yml配置、常用命令

下载完docker-compose后,如果想使用docker-compose命令开头,需要创建软连接

sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose

1.docker-compose.yml文件编排

一个 docker-compose.yml 文件的顶层元素有:version、name、service、networks、volumes、configs、secrests,涉及的配置非常多,这里只是稍微讲一下一些比较常用的

1.1 version

version: "3.0"

version 元素是编排文件的格式版本,而非Docker Compose 或 Docker 引擎的版本号

services

services元素用于定义不同的应用服务,在编排文件中是必需的,是我们定义容器怎么启动编排、怎么依赖的地方。

  • build
    build元素声明怎么通过源代码从本地创建一个镜像。
    可以将build指定为定义上下文路径的单个字符串,这个路径字符串以是绝对路径或者相对路径的方式指向Dockerfile文件或者Dockerfile所在的文件夹,不推荐使用绝对路径,因为这样会影响编排文件的可移植性。
services:serviceA:			# serviceA 是简略版构建,serviceB是详细构建build: ../webappserviceB:build:context: ../../backend  # 上下文路径,相对于compose.yamldockerfile: ./service.dockerfile # Dockerfile文件路径,相对于context,这种方式可以指定dockerfile文件名args: type:cdc3b19 #添加构建参数,构造参数必须是Dockerfile已经定义的labels:description: "service B"  #设置构建镜像的标签。target: publish # 多层构建,可以指定构建哪一层
  • image
    指定构建容器使用的镜像,如果本地镜像不存在,则会根据pull_policy配置拉取镜像,如果buildimage同时存在,build优先(如果本地之前已经build过一次,将会使用pull_policy的默认规则进行构建),构建完将使用image指定的名字和标记对其进行标记。
services:nginx:image: custom/nginxbuild: .
构建出的镜像名称叫做 custom/nginx
  • pull_policy
    编码文件拉取镜像的策略
    • always:从仓库拉取,不使用本地缓存
    • never:只要本地缓存,不从仓库拉取,如果本地没有镜像则报错
    • missing:优先使用本地,否则从仓库拉取,这个是默认值
    • build:从本地源码构建,就算镜像存在也会
version: '3.4'
name: testservices:flaskdemo:container_name: flask_test_bsimage: flask_demo-flaskdemo	# 本地已经有这个镜像了pull_policy: build		但是仍会重新build,并且镜像名是flask_demo-flaskdemobuild:context: .dockerfile: ./Dockerfileports:- 5000:5000
  • environment
    设置环境变量,相当于docker run -e
services:mysql:image: mysql:5.7ports:- "3306:3306"environment:MYSQL_ROOT_PASSWORD: root  #字典格式
  • depends_on
    配置服务依赖关系,当前服务启动时会先启动被依赖的服务,必须等到被依赖的服务进行"ready"状态,当前服务才会启动,当前服务停止后被依赖的服务才会停止。可以以短语法和长语法两种方式书写
services:web:build: .depends_on:-db-redisredis:image: redisdb:image: postgres
  • network_mode
    设置网络模式 (默认是bridge)
    • none 禁用所有容器的网络
    • host 它使容器可以原始访问主机的网络接口
    • service:{name} 它只允许容器访问指定服务
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
  • networks
    配置容器连接的网络,需要引用顶级 networks 下的条目,同一网络上的其他容器可以使用服务名称来连接到对应容器的服务,也可以设置别名,通过别名来连接。
services:some-service:networks:-some-network-other-network
networks:some-network:other-network:
  • ports
    配置端口映射
  • volumes
    指定宿主机目录和容器目录映射,如果一个主机目录只是由单个服务使用,可以直接在服务定义里面配置,如果一个路径要跨多个服务复用,则必须在顶层的volumes中配置
volumes:# 只需指定一个路径,让引擎创建一个卷- /var/lib/mysql# 指定绝对路径映射- /opt/data:/var/lib/mysql# 相对于当前compose文件的相对路径- ./cache:/tmp/cache# 用户家目录相对路径- ~/configs:/etc/configs/:ro# 命名卷- datavolume:/var/lib/mysql
  • scale
    配置一个服务启动容器的个数,不过这个指令已经被deploy指令中的replicas替代了,虽然还可以使用,但是会产生警告。
services:redis:image: redis:alpinescale: 2
或者
services:mysql:  image: redis:alpinedeploy:replicas: 2
  • networks
    网络是允许服务彼此通信的层,可以通过在顶层下指定网络名称来创建网络,服务可以通过在服务下指定网络名称来连接到网络,连接到相同网络的服务能够进行相互通讯。如果没有显式配置网络,则compose在编排的时候会创建默认网络。
version: '3.4'
name: testservices:flaskdemo:container_name: flask_test_bsimage: flask_demo-flaskdemo# pull_policy: buildbuild:context: .dockerfile: ./Dockerfileports:- 5000:5000networks:- webapi-netredis:image: "redis:alpine"networks:- webapi-netscale: 2networks:webapi-net:

运行 docker compose config 显示
在这里插入图片描述

docker compose常用命令

  • docker compose config
    config命令用于验证Compose 文件格式是否正确,若正确则显示配置,若格式错误显示错误原因,并不会执行真正的操作

  • docker compose up
    它会尝试自动完成构建镜像,创建服务,启动服务,并关联服务相关容器的一系列操作。依赖的服务都也会被自动启动,除非依赖的服务已经处于运行状态。
    大部分时候都可以直接通过该命令来启动一个项目。默认情况,docker-compose up 启动的容器都在前台, 使用 docker-comose up -d,后台运行所有容器
    `
    –force-recreate 强制重新创建容器,不能与 --no-recreate 同时使用。
    –no-recreate 如果容器已经存在了,则不重新创建,不能与 --force-recreate 同时使用。
    –scale 在启动的时候设置一个服务启动多少个容器,会覆盖compose.yaml文件中的设置
    –no-build 不自动构建缺失的服务镜像。

  • docker compose down
    down命令默认会停止并移除 up 命令所启动的容器和创建的网络,但不会移除数据卷

  • docker compose ps -a
    列出项目中的所有容器

  • docker compose exec -it 服务名 /bin/bash
    进入容器内部

  • docker compose start/stop/restart/pause/unpause/rm services 注意区分service和容器名
    启动/停止/重启/暂停/恢复暂停/删除服务

  • docker compose logs -f 【service】
    查看容器日志

相关文章:

docker-compose yml配置、常用命令

下载完docker-compose后,如果想使用docker-compose命令开头,需要创建软连接 sudo ln -s /usr/local/lib/docker/cli-plugins/docker-compose /usr/bin/docker-compose 1.docker-compose.yml文件编排 一个 docker-compose.yml 文件的顶层元素有&#xff…...

【实战】 七、Hook,路由,与 URL 状态管理(下) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十三)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理七、Hook&…...

【MySQL】_5.MySQL的联合查询

目录 1. 笛卡尔积 2. 内连接 2.1 示例1:查询许仙同学的成绩 2.2 示例2: 查询所有同学的总成绩,及同学的个人信息 2.3 示例3:查询所有同学的科目及各科成绩,及同学的个人信息 3. 外连接 3.1 情况一:两…...

【后端面经】微服务构架 (1-3) | 熔断:熔断-恢复-熔断-恢复,抖来抖去怎么办?

文章目录 一、前置知识1、什么是熔断?2、什么是限流?3、什么是降级?4、怎么判断微服务出现了问题?A、指标有哪些?B、阈值如何选择?C、超过阈值之后,要不要持续一段时间才触发熔断?5、服务恢复正常二、面试环节1、面试准备2、面试基本思路三、总结 在微服务构架中…...

对UITextField输入内容的各种限制-总结

使用代理方法来限制输入框中的字数,输入的符号,输入的数字大小等各种限制 限制输入字数 已经有小数点了,就不能继续输入小数点 不能输入以0为开头的内容 不能输入以.为开头的内容 小数点后只允许输入一位数 只能输入100以下的数值 **不能包括…...

【图论】二分图

二分图,即可以将图中的所有顶点分层两个点集,每个点集内部没有边 判定图为二分图的充要条件:有向连通图不含奇数环 1、染色法 可以解决二分图判断的问题 步骤与基本思路 遍历图中每一个点,若该点未被染色,则遍历该…...

数据结构——(一)绪论

👉数据元素整体思维导图 欢迎补充 一、基本概念❤️ 1.1基本术语⭐️ (1)数据 客观事务属性的数字、字符。 (2)数据元素 数据元素是数据的基本单位,一个数据元素可由若干数据项组成,数据项是…...

[ 华为云 ] 云计算中Region、VPC、AZ 是什么,他们又是什么关系,应该如何抉择

前几天看到一个问答帖,我回答完了才发现这个帖子居然是去年的也没人回复,其中他问了一些华为云的问题,对于其中的一些概念,这里来总结讲解一下,希望对学习华为云的小伙伴有所帮助。 文章目录 区域(Region&a…...

表单验证:输入的字符串以回车分隔并验证是否有

公司项目开发时&#xff0c;有一个需求&#xff0c;需要对输入的字符串按回车分隔并验证是否有重复项&#xff0c;效果如下&#xff1a; 表单代码&#xff1a; <el-form-item label"IP地址条目&#xff1a;" prop"ipAddressEntry"><el-inputtype&…...

智能财务分析-亿发财务报表管理系统,赋能中小企业财务数字化转型

对于许多中小企业来说&#xff0c;企业重要部门往往是财务和业务部门。业务负责创收&#xff0c;财务负责控制成本&#xff0c;降低税收风险。但因管理机制和公司运行制度的原因&#xff0c;中小企业往往面临着业务与财务割裂的问题&#xff0c;财务数据不清晰&#xff0c;无法…...

图为科技T501赋能工业机器人 革新传统工业流程

工业机器人已成为一个国家制造技术与科技水平的重要衡量标准&#xff0c;在2019年&#xff0c;中国工业机器人的组装量与产量均位居了全球首位。 当前&#xff0c;工业机器人被广泛用于电子、物流、化工等多个领域之中&#xff0c;是一种通过电子科技和机械关节制作出来的智能机…...

安全狗深度参与编写的《云原生安全配置基线规范》正式发布!

7月25日&#xff0c;由中国信息通信研究院、中国通信标准化协会主办的2023可信云大会在北京顺利开幕。 作为国内云原生安全领导厂商&#xff0c;安全狗受邀出席此次活动。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;成立于2013年&#xff0c…...

如何在3ds max中创建可用于真人场景的巨型机器人:第 2 部分

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 创建主体 步骤 1 打开 3ds Max。选择机器人头部后&#xff0c;二次单击鼠标并选择隐藏未选中。机器人的其他部分 除了头部之外&#xff0c;将被隐藏。 打开 3ds Max 步骤 2 在人脸选择模式下&#x…...

Vue中TodoList案例_编辑

nextTick: MyItem.vue 加一个编辑按钮&#xff0c;input框&#xff1a;blur失去焦点时触发事件handleBlur&#xff0c;ref获取真实dom&#xff1a; <inputtype"text"v-show"todo.isEdit":value"todo.title"blur"handleBlur(todo,$even…...

什么是Redis?

什么是Redis 什么是Redis一、特性1. 支持多种数据结构2. 读/写速度快&#xff0c;性能高。3. 支持持久化。4. 实现高可用主从复制&#xff0c;主节点做数据副本。5. 实现分布式集群和高可用。 二、基本数据类型string&#xff08;字符串&#xff09;list(双向链表)set(集合)zse…...

深入浅出理解vue2/vue3响应式原理

一、简介 当谈论Vue 2和Vue 3的响应式原理时&#xff0c;我们主要关注的是其数据双向绑定的机制。数据双向绑定是指当数据发生变化时&#xff0c;视图会自动更新&#xff1b;反之&#xff0c;当视图发生变化时&#xff0c;数据也会相应地更新。这种特性让我们在前端开发中更加…...

ssh连接服务器配置

平常每次都是 ssh root111.111.111.111 然后再输入密码 很事麻烦 总结 首先本地生成密钥和公钥 ssh-keygen -t rsa -C "XXX" ~/.ssh id_rsa.pub 将公钥加入远程服务器中的authorized_keys中 用户可以手动编辑该文件&#xff0c;把公钥粘贴进去&#xff0c;也可…...

el-table 表头设置渐变色

<el-table :data"tableData" stripe><el-table-column prop"name" label"测试" align"left"></el-table-column><el-table-column prop"code" label"测试1" align"left"></…...

GB/T 25000.51解读——软件产品的易用性怎么测?

GB/T 25000.51-2016《软件产品质量要求和测试细则》是申请软件检测CNAS认可一定会用到的一部国家标准。在前面的文章中&#xff0c;我们为大家整体介绍了GB/T 25000.51-2016《软件产品质量要求和测试细则》国家标准的结构和所涵盖的内容以及对软件产品的八大质量特性中的功能性…...

408复试day2(7大排序算法)

数据结构 7大排序算法总结&#xff1a; 首先排序分为内排序和外排序&#xff1a; 内排序是指待排序的记录放置在内存&#xff0c;而外排序是指排序的过程中需要对内存进行访问。其中稳定的排序有“插冒归”&#xff0c;即插入排序、冒泡排序、归并排序。 1.冒泡排序 算法原理&a…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

消息队列系统设计与实践全解析

文章目录 &#x1f680; 消息队列系统设计与实践全解析&#x1f50d; 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡&#x1f4a1; 权衡决策框架 1.3 运维复杂度评估&#x1f527; 运维成本降低策略 &#x1f3d7;️ 二、典型架构设计2.1 分布式事务最终一致…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理&#xff1a;检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;RankRAG&#xff1a;Unifying Context Ranking…...