实时警报通知:微信告警通知的重要性解析
2229
2022-12-30
本文目录一览:
模板文件是使用 Compose 的核心docker compose 文件缓存,涉及到的指令关键字也比较多。大部分指令跟 docker run 相关参数的含义都是类似的。
默认的模板文件名称为 docker-compose.yml ,格式为 YAML 格式。
可以将 Compose 文件命名为任何所需内容,以使其在逻辑上具有意义; docker-compose.yml 仅为标准名称。我们可以简单地将此文件命名为 docker-stack.yml 或更特定于项目的内容
注意每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile )等来自动构建生成镜像。
在 docker stack 下, build 指令不能使用,只能用 image
如果使用 build 指令,在 Dockerfile 中设置的选项(例如: CMD , EXPOSE , VOLUME , ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。
请注意,将 Compose 文件设置为 version:"3" 。本质上,这会使其兼容 swarm mode 。我们可以使用 deploy key (仅可用于 Compose 文件格式版本 3.x 及更高版本)及其子选项对每项服务(例如,web)进行负载均衡和优化性能。我们可以使用 docker stack deploy 命令(仅在 Compose 文件版本 3.x 及更高版本上受支持)运行此文件。您可以使用 docker-compose up 运行具有 非 swarm 配置的版本 3 文件。
指定 Dockerfile 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。
也可以使用 context 指令指定 Dockerfile 所在文件夹的路径。
使用 dockerfile 指令指定 Dockerfile 文件名。
使用 arg 指令指定构建镜像时的变量。
使用 cache_from 指定构建镜像的缓存
指定容器的内核能力(capacity)分配。
让容器拥有所有能力可以指定为:
去掉 NET_ADMIN 能力可以指定为:
覆盖容器启动后默认执行的命令。
仅用于 Swarm mode
指定父 cgroup 组,意味着将继承该组的资源限制。
例如,创建了一个 cgroup 组名称为 cgroups_1。
指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式。
仅用于 Swarm mode
指定设备映射关系。
解决容器的依赖、启动先后的问题。以下例子中会先启动 redis``db 再启动 web
自定义 DNS 服务器。可以是一个值,也可以是一个列表。
配置 DNS 搜索域。可以是一个值,也可以是一个列表。
挂载一个 tmpfs 文件系统到容器。
从文件中获取环境变量,可以为单独的文件路径或列表。
如果通过 docker-compose -f FILE 方式来指定 Compose 模板文件,则 env_file 中变量的路径会基于模板文件路径。
如果有变量名称与 environment 指令冲突,则按照惯例,以后者为准。
环境变量文件中每一行必须符合格式,支持 # 开头的注释行。
设置环境变量。docker compose 文件缓存你可以使用数组或字典两种格式。
只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据。
如果变量名称或者值中用到 true|false , yes|no 等表达 布尔 含义的词汇,最好放到引号里,避免 YAML 自动解析某些内容为对应的布尔语义。这些特定词汇,包括
y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF
暴露端口,但不映射到宿主机,只被连接的服务访问。
仅可以指定内部端口为参数
类似 Docker 中的 --add-host 参数,指定额外的 host 名称映射信息。
会在启动后的服务容器中 /etc/hosts 文件中添加如下两条条目。
通过命令检查容器是否健康运行。
指定为 镜像名称或镜像 ID 。如果镜像在本地不存在, Compose 将会尝试拉取这个镜像。
为容器添加 Docker 元数据(metadata)信息。例如可以为容器添加辅助说明信息。
配置日志选项。
目前支持三种日志驱动类型:
options 配置日志驱动的相关参数:
设置网络模式。使用和 docker run 的 --network 参数一样的值。
配置容器连接的网络。
跟主机系统共享进程命名空间。打开该选项的容器之间,以及容器和宿主机系统之间可以通过 进程ID 来相互访问和操作。
暴露端口信息。
使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。
存储敏感数据,例如 mysql 服务密码。
指定容器模板标签(label)机制的默认属性(用户、角色、类型、级别等)。例如配置标签的用户名和角色名。
设置另一个信号来停止容器。在默认情况下使用的是 SIGTERM 停止容器。
配置容器内核参数。
指定容器的 ulimits 限制值。
例如,指定最大进程数为 65535,指定文件句柄数为 20000(软限制,应用可以随时修改,不能超过硬限制) 和 40000(系统硬限制,只能 root 用户提高)。
数据卷所挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER) 或加上访问模式 (HOST:CONTAINER:ro) 。
该指令中路径支持相对路径。
此外,还有包括 domainname , entrypoint , hostname , ipc , mac_address , privileged , read_only , shm_size , restart , stdin_open , tty , user , working_dir 等指令,基本跟 docker run 中对应参数的功能一致。
指定服务容器启动后执行的入口文件。
指定容器中运行应用的用户名。
指定容器中工作目录。
指定容器中搜索域名、主机名、mac 地址等。
允许容器中运行一些特权命令。
指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped 。
以只读模式挂载容器的 root 文件系统,意味着不能对容器内容进行修改。
打开标准输入,可以接受外部输入。
模拟一个伪终端。
Compose 模板文件支持动态读取主机的系统环境变量和当前目录下的 .env 文件中的变量。
例如,下面的 Compose 文件将从运行它的环境中读取变量 ${MONGO_VERSION} 的值,并写入执行的指令中。
如果执行 MONGO_VERSION=3.2 docker-compose up 则会启动一个 mongo:3.2 镜像的容器;如果执行 MONGO_VERSION=2.8 docker-compose up 则会启动一个 mongo:2.8 镜像的容器。
若当前目录存在 .env 文件,执行 docker-compose 命令时将从该文件中读取变量。
在当前目录新建 .env 文件并写入以下内容。
执行 docker-compose up 则会启动一个 mongo:3.6 镜像的容器。
由于之前写了一篇文章,主要是关于docker 基础的东西。这里说一下,容器编排的事情,因为后面 k8s 会用到这个。
参考 下面这个, 文档特别清晰
Docker Compose gitbook
注意 docker compose 有两个版本 一个是 python 编写的 ( docker-compose ),一个是 go 重写的 叫 compose v2 ( docker compose )命令几乎没有区别,只是 go 的少了 - , 我们用python 版的就行。没什么差别
目标 : 定义和运行多个 Docker 容器的应用, 针对多个容器组,进行一键启动和停止。
具体实现 : docker-compose.yml 来定义一组相关联的应用容器为一个项目(project) docker-compose.yml 就相当于 dockerfile 的 dockfile
概念
service 服务 , 包含多个运行的容器
project 项目, docker compose 管理的单元
自己跑了一便文档上的例子,确实比较好用哟
内容分别如下:
app.py
Dockerfile
docker-compose.yml
运行过程
看一下刚刚启动的容器:
上述命令会自动 帮你构建镜像,并按照配置启动容器组。已经存在镜像,则不会成重新构建,除非 使用 docker-compose build 重新构建服务
停止过程
可以看出,是先停掉容器,然后再删除容器的,也会删除网络。所以必要的数据一定要 挂载到外面做持久化
可以看到不会重复构建镜像,只会创建新的网络和容器
可选的 参数
-f, --file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名
(up 的时候可以,使用 -p 参数修改 默认的 目录名的项目名)
检查 Compose 文件是不是对的,错误的话会有错误信息
停止容器组,依次删除容器和清楚创建的网络
进入指定的容器 ( services 里定义的服务名) 或者直接 docker exec
查看容器组 (只包含 compose 启动的容器)
列出 compose 文件中的镜像
默认会 用不同的颜色 显示 服务组的控制台日志
暂停一个服务容器,和 docker pause 一样的
拉取服务依赖的镜像
推送服务依赖的镜像到 Docker 镜像仓库
重启项目中的服务
所有关联的服务将会自动被启动
这个还是挺有用的,设置服务容器的个数
启动服务
关闭容器
这个命令是最常用的
ymal
一个基本模板
一些可用的配置项 (只说一下,常用的吧)
每个服务都必须通过 image 或者 build ( 使用 Dockerfile) 指令 指定镜像生成的方式
指定dockerfile 路径,相对于 docker-compose.ymal 文件 相对路径 或者 绝对路径
默认为 dockerfile 的入口命令,你可以用这个覆盖
覆盖默认的规则 : 项目名称 服务名称 序号
如果指定了 这个容器名,就没办法使用 docker-compose scale 命令了,因为多个容器名不能一样
指定当前容器 依赖那个容器(需要先启动)
下面的启动 顺序依次是 redis db web
web 服务不会等待 redis db 「完全启动」之后才启动
暴露端口,但不映射到宿主机
容器健康检查配置
和build 目的一样,指定某个镜像的生成方式
如果本地不存在 会尝试 pull
添加容器描述信息, 和 dockerfile 里面的 labels 一样
和 docker run --network 的一样
设置容器使用的网络
和 docker run -p 一样
HOST:CONTAINER 前面是 宿主机,后面是容器,单个 的话就是暴露容器端口
设置挂在目录
HOST:CONTAINER 宿主机路径/数据卷 : 容器路径
支持相对路径
以及其他命令
domainname, entrypoint, hostname, ipc, mac_address, privileged, read_only, shm_size, restart, stdin_open, tty, user, working_dir
关于 compose 容器间的通信 (使用 服务名 即可)
https://michael728.github.io/2019/06/15/docker-compose-networks/
下面关于我的 docker-compose.yml
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用YAML文件来配置应用程序的服务。然后,只需一个命令,就可以从配置中创建并启动所有服务。
用python构建一个简易网页统计网页点击量,docker-compose进行发布
Step1:创建项目
Step2:创建Dockerfile文件
Step3:在docker-compose.yml中定义services
Step4:用Docker compose构建和运行app
Step5:绑定一个数据卷
将当前目录与容器的/code目录绑定,这样可以动态修改代码
Step6:重新构建和运行app
先docker-compose down停止服务,在构建
用YAML文件定义服务,默认文件是docker-compose.yml,包含4个顶级key,version、services、networks、volumes
参考compose-spec/spec.md at master · compose-spec/compose-spec · GitHub
指定本 yml 依从的 compose版本
定义多个应用服务,包含环境配置、镜像构建等
指定构建镜像的路径
定义服务的block IO配置,参考compose-spec/spec.md at master · compose-spec/compose-spec · GitHub
指定自定义容器名称
定义服务间启动或关闭的依赖关系
覆盖容器启动的默认命令
domainname declares a custom domain name to use for the service container.
覆盖容器默认的entrypoint
从文件中添加环境变量到容器,可以是一个或多个文件
文件格式:
添加环境变量
暴露端口,但不映射到宿主机,只被连接的服务访问,仅可以指定内部端口
用于检测 docker 服务是否 健康 运行。
指定容器运行的镜像
设置容器标签
连接到另一个容器的网络,简单将就是让容器相互连通
服务的日志记录配置,driver:指定服务容器的日志记录驱动程序,默认值为json-file。有以下三个选项
仅在 json-file 驱动程序下,可以使用以下参数,限制日志得数量和大小。
syslog 驱动程序下,可以使用 syslog-address 指定日志接收地址。
设置网络模式,格式如下:
配置容器连接的网络
指定ip地址
端口映射,映射主机与容器端口,格式:Host:ontainer
容器重启策略
存储敏感数据,比如密码
将主机数据卷挂载到容器
覆盖容器工作目录
关于docker compose 文件缓存和docker-compose命令详解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 docker compose 文件缓存的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于docker-compose命令详解、docker compose 文件缓存的信息别忘了在本站进行查找喔。发表评论
暂时没有评论,来抢沙发吧~