当前位置: 首页 > 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】
    查看容器日志

http://www.lryc.cn/news/95481.html

相关文章:

  • 【实战】 七、Hook,路由,与 URL 状态管理(下) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十三)
  • 【MySQL】_5.MySQL的联合查询
  • 【后端面经】微服务构架 (1-3) | 熔断:熔断-恢复-熔断-恢复,抖来抖去怎么办?
  • 对UITextField输入内容的各种限制-总结
  • 【图论】二分图
  • 数据结构——(一)绪论
  • [ 华为云 ] 云计算中Region、VPC、AZ 是什么,他们又是什么关系,应该如何抉择
  • 表单验证:输入的字符串以回车分隔并验证是否有
  • 智能财务分析-亿发财务报表管理系统,赋能中小企业财务数字化转型
  • 图为科技T501赋能工业机器人 革新传统工业流程
  • 安全狗深度参与编写的《云原生安全配置基线规范》正式发布!
  • 如何在3ds max中创建可用于真人场景的巨型机器人:第 2 部分
  • Vue中TodoList案例_编辑
  • 什么是Redis?
  • 深入浅出理解vue2/vue3响应式原理
  • ssh连接服务器配置
  • el-table 表头设置渐变色
  • GB/T 25000.51解读——软件产品的易用性怎么测?
  • 408复试day2(7大排序算法)
  • Vue消息订阅与发布
  • MySQL学习笔记 ------ 分组查询
  • Matlab 点云平面特征提取
  • vite的介绍
  • 裁员 10%,暴跌 14%,这家 IT 独角兽正在被抛弃!
  • 电脑记事本在哪里?电脑桌面显示记事本要怎么设置?
  • 微服务笔记---Nacos集群搭建
  • python 小案例
  • 【SpringBoot】SpringBoot JPA 基础操作(CURD)
  • 大数据技术之Hive3
  • Spring Boot实践二