没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
dockercompose编排参数详解
一、前言
Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用
YAML文件来配置应用程序的服务。然后,使用单个命令,您可以从配置中创建并启动所有服
务。
Compose可以.yml或.yaml作为文件扩展名。
Compose适用于所有环境:生产,登台,开发,测试以及CI工作流程。
关于dockercompose技术可以查看官方文档DockerCompose
以下的内容是确立在已经下载好Docker以及DockerCompose,可参看DockerCompose的官
方安装教程InstallDockerCompose
二
、
DockerCompose
配
置
文
件
的
构
建
参
数
说
明
2.1build
服务除了可以基于指定的镜像,还可以基于一份Dockerfile,在使用up启动之时执行构建任务,这
个构建标签就是build,它可以指定Dockerfile所在文件夹的路径。Compose将会利用它自动构建
这个镜像,然后使用这个镜像启动服务容器。
build可以指定为包含构建上下文路径的字符串:
version:"3.7"
services:
webapp:
build:./dir
或者,作为具有在上下文中指定的路径的对象以及可选的Dockerfile和args:
version:"3.7"
services:
webapp:
build:
context:./dir
dockerfile:Dockerfilealternate
args:
buildno:1
如果您指定image以及build,则使用以下指定的webapp和可选项对构建的图像进行命名:
这会在./dir目录下生成一个名为webapp和标记的图像tag。
build:./dir
image:webapp:tag
注意:当用(Version3)Compose文件在群集模式下部署堆栈时,该选项被忽
略。因为dockerstack命令只接受预先构建的镜像。
2.2context
context选项可以是Dockerfile的文件路径,也可以是到链接到git仓库的url。
当提供的值是相对路径时,它被解析为相对于撰写文件的路径,此目录也是发送到Docker守护进程
的context。
build:
context:./dir
2.3dockerfile
使用此dockerfile文件来构建,必须指定构建路径。
build:
context:.
dockerfile:Dockerfilealternate
2.4args
添加构建参数,这些参数是仅在构建过程中可访问的环境变量。
首先,在Dockerfile中指定参数:
ARG buildno
ARG gitcommithash
RUN echo "Build number: $buildno"
RUN echo "Based on commit: $gitcommithash"
然后在build键下指定参数,可以传递映射或列表:
build:
context:.
args:
buildno:1
gitcommithash:cdc3b19
build:
context:.
args:
buildno=1
gitcommithash=cdc3b19
注意:在Dockerfile中,如果ARG在FROM指令之前指定,ARG则在构建说明
中不可用FROM。如果您需要在两个位置都可以使用参数,请在FROM指令下
指定它。
您可以在指定构建参数时省略该值,在这种情况下,它在构建时的值是运行Compose的环境中的值。
args:
buildno
gitcommithash
注意:YAML布尔值(true,false,yes,no,on,off)必须用引号括起来,
这样分析器会将它们解释为字符串。
2.5cache_from
编写缓存解析镜像列表,此选项是v3.2中的新选项。
build:
context:.
cache_from:
alpine:latest
corp/web_app:3.14
2.6labels
使用Docker标签将元数据添加到生成的镜像中,可以使用数组或字典。
建议使用反向DNS标记来防止签名与其他软件所使用的签名冲突,此选项是v3.3中的新选项。
build:
context:.
labels:
com.example.description:"Accountingwebapp"
com.example.department:"Finance"
com.example.labelwithemptyvalue:""
build:
context:.
labels:
"com.example.description=Accountingwebapp"
"com.example.department=Finance"
"com.example.labelwithemptyvalue"
2.7shm_size
设置容器/dev/shm分区的大小,值为表示字节的整数值或表示字符的字符串
build:
context:.
shm_size:'2gb'
build:
context:.
shm_size:10000000
2.8target
根据对应的Dockerfile构建指定Stage
build:
context:.
target:prod
2.9cap_add
,
cap_drop
添加或删除容器功能,可查看man7capabilities
cap_add:
ALL
cap_drop:
NET_ADMIN
SYS_ADMIN
注意:当用(Version3)Compose文件在群集模式下部署堆栈时,该选项被忽
略。因为dockerstack命令只接受预先构建的镜像
2.10cgroup_parent
可以为容器选择一个可选的父cgroup_parent
cgroup_parent:mexecutorabcd
注意:当使用(Version3)Compose文件在群集模式下部署堆栈时,忽略
此选项
2.11.command
覆盖容器启动后默认执行的命令
command:bundleexecthinp3000
该命令也可以是一个列表,方式类似于dockerfile:
command:["bundle","exec","thin","p","3000"]
2.12.configs
使用服务configs配置为每个服务赋予相应的访问权限,支持两种不同的语法
Note:配置必须存在或在configs此堆栈文件的顶层中定义,否则堆栈部署失效
2.12.1SHORT
语
法
SHORT语法只能指定配置名称,这允许容器访问配置并将其安装在/<config_name>容器内,源
名称和目标装入点都设为配置名称。
version:"3.7"
services:
redis:
image:redis:latest
deploy:
replicas:1
configs:
my_config
my_other_config
configs:
my_config:
file:./my_config.txt
my_other_config:
external:true
以上实例使用SHORT语法将redis服务访问授予my_config和my_other_config,并
被my_other_config定义为外部资源,这意味着它已经在Docker中定义。可以通过docker
configcreate命令或通过另一个堆栈部署。如果外部部署配置都不存在,则堆栈部署会失败并出
现confignotfound错误。
注意:config定义仅在3.3版本或在更高版本的撰写文件格式中受支持,
YAML的布尔值(true,false,yes,no,on,off)必须要使用引号引起来(单
引号、双引号均可),否则会当成字符串解析。
2.12.2LONG
语
法
LONG语法提供了创建服务配置的更加详细的信息。
source:Docker中存在的配置的名称
target:要在服务的任务中装载的文件的路径或名称。如果未指定则默认为/<source>
uid和gid:在服务的任务容器中拥有安装的配置文件的数字UID或GID。如果未指定,则默认为在
Linux上。Windows不支持。
mode:在服务的任务容器中安装的文件的权限,以八进制表示法。例如,0444代表文件可读的。
默认是0444。如果配置文件无法写入,是因为它们安装在临时文件系统中,所以如果设置了可写
位,它将被忽略。可执行位可以设置。如果您不熟悉UNIX文件权限模式,UnixPermissions
Calculator
下面示例在容器中将my_config名称设置为redis_config,将模式设置为0440(group
readable)并将用户和组设置为103。该redis服务无法访问my_other_config配置。
version:"3.7"
services:
redis:
image:redis:latest
deploy:
replicas:1
configs:
source:my_config
target:/redis_config
uid:'103'
gid:'103'
mode:0440
configs:
my_config:
file:./my_config.txt
my_other_config:
external:true
可以同时授予多个配置的服务相应的访问权限,也可以混合使用LONG和SHORT语法。定义配置并
不意味着授予服务访问权限。
2.13container_name
为自定义的容器指定一个名称,而不是使用默认的名称
container_name:mywebcontainer
由于Docker容器名称必须是唯一的,因此如果指定了自定义名称,则无法将服务扩展到1个容器之
外。试图这样做会导致错误。
注意:使用(版本3)Compose文件在群集模式下部署堆栈时,将忽略此选
项。
2.14credential_spec
注意:此选项已在v3.3中添加。在Compose版本3.8中支持使用具有撰写文件
的组托管服务帐户(GMSA)配置。
配置托管服务帐户的凭据规范。此选项仅用于使用Windows容器的服务。
使用file时:应该注意引用的文件必须存在于CredentialSpecs,docker数据目录的子目录中。
在Windows上,该目录默认为C:\ProgramData\Docker\。以下示例从名为
C:\ProgramData\Docker\CredentialSpecs\mycredentialspec.json的文件加载凭证规范:
credential_spec:
file:mycredentialspec.json
使用registry:将从守护进程主机上的Windows注册表中读取凭据规范。其注册表值必须位于:
HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Virtualization\Containers\CredentialSpecs
下面的示例通过mycredentialspec注册表中指定的值加载凭证规范:
credential_spec:
registry:mycredentialspec
剩余21页未读,继续阅读
资源评论
型爷
- 粉丝: 16
- 资源: 337
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功