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】
    查看容器日志

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

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

相关文章

flask介绍、快速使用、配置文件、路由系统

前言: Flask框架和Django框架的区别: Django框架: 大而全,内置的app的很多,第三方app也很多Flask框架: 小而精,没有过多的内置app,只能完成web框架的基本功能,很多功能都需要借助第三…

Ceph组件

Ceph组件 无论是想向云平台提供Ceph 对象存和 Ceph 块设备服务、部署Ceph 文件系统,或者是将 Ceph 用于其他目的,所有 Ceph 存储集群部署都从设置每个 Ceph 节点、网络开始。 一个Ceph 存储集群至少需要一个Ceph Monitor、Ceph Manager和 Ceph OSD (OBJECT STORAGE DAEMON对象存…

翻转单词顺序

剑指 Offer 58 - I. 翻转单词顺序 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。 示例 1…

[虚幻引擎] UE里面监控每帧循环里面 C++ 函数的性能, 函数耗时,函数效率,函数执行时间

在使用C开发UE引擎,有时候需要监控函数的执行的执行效率,这个时候有两种方式可以使用。 1. 执行代码耗时时间 double ThisTime 0;{SCOPE_SECONDS_COUNTER(ThisTime);// ...// 一串代码// ...}UE_LOG(LogTemp, Log, TEXT("Stats::Broadcast %.2f&qu…

65英寸OLED透明屏的显示效果出色吗?

65英寸OLED透明屏是一种新型的显示技术,它采用有机发光二极管(OLED)作为显示元件,具有高亮度、高对比度、快速响应和广视角等优点。 与传统的液晶显示屏相比,OLED透明屏具有更高的透明度和更好的显示效果。 OLED透明屏…

【STM32】使用HAL库对ULN2003控制28BYJ-48步进电机

步进电机是将电脉冲信号转变为角位移或线位移,通过控制施加在电机线圈上的电脉冲顺序、频率和数量,可以控制步进电机的转向、速度和旋转角度。 配合以直线运动执行机构(螺纹丝杆)或齿轮箱装置,更可以实现更加复杂、精密的线性运动控制要求。…

PDF文件转换成word软件有哪些?分享两个文件格式转换软件

在日常办公中,我们经常使用各种办公软件,其中PDF和Word是最常见的两种格式。相较于Word文件,PDF文件具有更强的兼容性和安全性,因此我们通常会选择以PDF格式分享文件。然而,如果我们需要提取PDF文件中的部分内容&#…

计算机启动过程uefi+gpt方式

启动过程: 一、通电 按下开关,不用多说 二、uefi阶段 通电后,cpu第一条指令是执行uefi固件代码。 uefi固件代码固化在主板上的rom中。 (一)uefi介绍 UEFI,全称Unified Extensible Firmware Interface&am…

JVM运行时数据区——字符串常量池位置的调整

在JDK6及之前,使用永久代来实现方法区,字符串常量池(StringTable)是在永久代(方法区)中的,但是方法区的回收效率不高,在Full GC时才会回收。 在JDK7中,将字符串常量池转移到了堆中,分配在年轻代和老年代中。…

linux 使用nethogs命令查看各个进程使用网络的情况

1,使用nethogs命令查看各个进程使用网络的情况 #yum -y install nethogs 2,使用nethogs命令查看进程使用网络的情况 #nethogs

PHP8知识详解:PHP8的新特性

PHP 8是PHP编程语言的一个主要版本,在2020年11月26日发布。它引入了许多新特性和改进,包括以下一些主要特性: 1. JIT 编译器:PHP 8引入了名为Tracing JIT的即时(Just-In-Time)编译器。JIT可以将PHP脚本中频…

【C++ 进阶】继承

一.继承的定义格式 基类又叫父类,派生类又叫子类; 二.继承方式 继承方式分为三种: 1.public继承 2.protected继承 3.private继承 基类成员与继承方式的关系共有9种,见下表: 虽然说是有9种,但其实最常用的还…

Stable diffusion 和 Midjourney 怎么选?

通过这段时间的摸索,我将和你探讨,对普通人来说,Stable diffusion 和 Midjourney 怎么选?最重要的是,学好影视后期制作对 AI 绘画创作有哪些帮助?反过来,AI 绘画对影视后期又有哪些帮助&#xf…

28.JavaWeb-Elasticsearch

1.Elasticsearch概述 Elasticsearch 是一个分布式的全文检索引擎。采用Java语言开发,基于Apache协议的开源项目,具有实时搜索,稳定,可靠,快速的特点。 1.1 全文检索引擎 分为通用搜索引擎(百度、谷歌&…

【深度学习】【Image Inpainting】Generative Image Inpainting with Contextual Attention

Generative Image Inpainting with Contextual Attention DeepFillv1 (CVPR’2018) 论文:https://arxiv.org/abs/1801.07892 论文代码:https://github.com/JiahuiYu/generative_inpainting 论文摘录 文章目录 效果一览摘要介绍论文贡献相关工作Image…

【Java SE】类和对象

目录 【1】面向对象的初步认识 【1.1】什么是面向对象 【1.2】面向对象与面向过程 【2】类定义和使用 【2.1】简单认识类 【2.2】类的定义格式 【2.3】练习 【2.3.1】定义一个狗类 【2.3.2】定义一个学生类 【3】类的实例化 【3.1】什么是实例化 【3.2】类和对象的…

【Java基础学习打卡18】运算符(上)

目录 前言一、运算符和表达式1.运算符2.表达式 二、算术运算符1.加法运算符2.减法运算符3.乘法运算符4.除法运算符5.取余运算符6.表达式类型自动提升 总结 前言 本文主要介绍运算符和表达式,及运算符中的算术运算符。在 Java 编程中,运算符起着非常重要…

Java 使用 Google Guava 实现接口限流

一、引入依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version> </dependency>二、自定义注解及限流拦截器 自定义注解&#xff1a;Limiter package com.haita…

安装requests模块及其他依赖库的完美解决办法

业务场景 导入requests库时报错&#xff0c;单独离线下载安装requests&#xff0c;发现仍然报错&#xff0c;问题在于requests库有其他依赖库。 WARNING: Retrying (Retry(total1, connectNone, readNone, redirectNone, statusNone)) after connection broken by NewConnect…

PgSQL-使用技巧-如何衡量网络对性能的影响

PgSQL-使用技巧-如何衡量网络对性能的影响 PG数据库和应用之间常见的部件有连接池、负载平衡组件、路由、防火墙等。我们常常不在意或者认为涉及的网络hops对整体性能产生的额外开销是理所当然的。但在很多情况下&#xff0c;它可能会导致严重的性能损失和拖累整体吞吐量。相当…