`

docker-compose 文件配置选项

阅读更多
    Docker compose 文件可用来配置 Docker 服务,它的默认路径是 ./docker-compose.yml(也可使用 .yaml 后缀)。正如 docker run 一样,在 Dockerfile 中指定的指令(如 CMD、EXPOSE 等),也就没必要在 docker-compose.yml 中再指定一遍。另外,也可以在配置值中使用 ${varname} 这样的语法来使用环境变量。还有 YAML 中的布尔值类型 true、false、on、off、yes、no 需要使用引号引起来,以便把它们当成字符串解析。
    接下来描述的就是版本 3 中用来定制服务的 Compose 文件格式的配置选项,具体用法见官方版https://docs.docker.com/compose/compose-file/
    ** build
    该选项会在构建时刻使用。它可以是指定了构建上下文的路径字符串,也可以是含有 contex 选项和其他可选项的对象(两者取其一)。build 有下面几个子选项:
    1、context:该选项可以是一个包含了 Dockerfile 的目录路径,也可以是一个 git 仓库地址。如果是一个相对路径,则是相对于 docker-compose.yml 的位置而言的。它的值会被当成构建上下文传给 Docker 守护进程。
    2、dockerfile:用来指定替换的 Dockerfile 路径,须要同时指定 context 选项。
    3、args:指定构建参数的值。首先要在 Dockerfile 中指定参数名,然后再使用该选项指定参数值。它的值可以是一个映射或列表,也可以忽略(这时它的值取自运行 compose 文件时的环境)。
    4、cache_from:指定引擎解析缓存时要使用的镜像列表。
    5、labels:使用 Docker Labels 为最终的镜像添加元数据,值为映射或列表形式。
    ** cap_add, cap_drop
    用于添加或删除容器功能(可用 man 7 capabilities 查看完整功能列表。注意,在版本 3 的 compose 文件中,当使用 swarm 模式部署栈时,该选项会被忽略)。
    ** command
    用于覆盖默认命令。值可以是普通字符串或是类似于 Dockerfile 中的数组形式。
    ** configs
    为服务指定要使用的配置,并挂载到容器中的 /dst_config_name 下。指定的配置名需要在顶层范围的 configs 中指明。支持短语法和长语法。短语法中 dst_config_name 就是配置名,长语法中可以使用 source 指定配置名,使用 target 指定 dst_config_name,使用 uid 和 gid 指定用户 ID 和组 ID,使用 mode 指定 dst_config_name 的文件访问权限(写权限会被忽略,因为配置文件是挂载到临时文件系统中的)。
    ** cgroup_parent
    为容器指定一个可选的所属组(当以 swarm 模式部署栈时该选项会被忽略)。
    ** container_name
    自定义容器名(当以 swarm 模式部署栈时该选项会被忽略)。
    ** credential_spec
    为所管理的服务账户配置证书规则。仅用于使用 Windows 类容器的服务。
    ** deploy
    指定与服务部署相关的配置。它仅在使用 docker stack deploy 命令部署到一个 swarm 时才会生效,并且会被 docker-compose up 和 docker-compose run 忽略。它支持下面多个子选项。
    1、 endpoint_mode:为连接到服务的外部客户端指定服务发现的方式。有两种方式:
      a)vip:由 Docker 为服务赋一个虚拟 IP。Docker 会自动为客户端和服务工作节点选择合适的路由。这是默认的方式。
      b)dnsrr:使用 DNS 服务发现。Docker 会为服务创建一个 DNS 项,以便使用服务名进行 DNS 查询时能连接到合适的 IP。该选项在你想使用自己的负载均衡器等情况下时是有用的。
    2、labels:为服务(而非容器)设置标签。
    3、mode:可为 global(每个 swarm 节点只有一个容器)或者 replicated(可有多个容器,默认)。
    4、placement:指定布置约束。
    5、replicas:当 mode 为 replicated 时,指定要运行的容器的数量。
    6、resources:配置内存、CPU 等资源限制。
    7、restart_policy:配置如何重启退出的容器。可以为下面一个或多个值:
      a)condition:值为 none、on-failure 或者 any 之一,默认为 any。
      b)delay:在下次尝试重启之前需要等待的时间,默认为 0。
      c)max_attempts:最多尝试重启的次数,默认从不放弃。
      d)window:判定一次重启失败前要等待的时间,默认立即判定。
    8、update_config:配置如何更新服务。可以为下面一个或多个值:
      a)parallelism:每次要更新的容器数量。
      b)delay:更新下一组容器前要等待的时间。
      c)failure_action:更新失败时要采取的动作。为 continue、rollback 或 pause 之一,默认为 pause。
      d)monitor:判定一次更新失败前要持续的时间,默认为 0s。
      e)max_failure_ratio:能容忍的最大更新失败率。
    ** devices
    指定设备映射列表。
    ** depends_on
    指出服务之间的依赖关系。
    ** dns
    自定义 DNS 服务。
    ** dns_search
    自定义 DNS 搜索域。
    ** tmpfs
    在容器中挂载一个临时文件系统。
    ** entrypoint
    覆盖默认的入口。注意,设置该选项将覆盖 Dockerfile 中使用 ENTRYPOINT 指令为服务镜像设置的默认入口,同时也会清除使用 CMD 指令设置的默认命令。
    ** env_file
    指定环境变量文件。如果使用 docker-compose -f FILE 指定了一个 Compose 文件,则 env_file 中指定的文件就是相对于那个文件所在的目录而言的。另外,使用 environment 选项定义的环境环境变量将会覆盖这些文件中定义的同名变量。注意,build 选项不能读取这些文件 和 environment 定义的环境变量,而应该使用 build 的子选项 args 来代替。
    ** environment
    添加环境变量。值可以是一个列表或映射。其中涉及的 boolean 值(如 true/false 和 yes/no)都需要用引号引起来,以免被 YML 解析器转换为 True 和 False。只指定了键的环境变量的值会被解析为机器运行时的对应值,这可用来指定比较敏感或与机器相关的信息。
    ** expose
    暴露端口,但不向主机公布,因此只能被链接的服务访问。只有内部端口才可这样设置。
    ** external_links
    关联到 Compose 之外启动的容器,尤其是那些提供了共享和常用服务的容器。
    ** extra_hosts
    添加主机名映射。使用与 docker 客户端的 --add-host 参数相同的值,同时还要在提供服务的容器的 /etc/hosts 文件中指明该映射关系。
    ** healthcheck
    配置如何检测运行服务的容器的“健康值”。
    ** image
    指定容器所使用的镜像。
    ** isolation
    指定容器的隔离技术。Windows 上支持的值有:default、process 和 hyperv,Linux 上仅支持 default。
    ** labels
    使用 Docker 标签为容器添加元数据。
    ** links
    关联另一个服务中的容器。如果同时指定了该选项和 networks 选项,那个关联的服务之间应该至少要有一个共同的网络才能相互通信。
    ** logging
    配置服务日志。
    ** network_mode
    指定网络模式。注意“network_mode: "host"”不能与 links 选项合用。
    ** networks
    指定服务要加入的网络,这些网络也应该在顶级范围中使用 networks 指明。它支持下面 几个子选项:
    1、aliases:创建服务在某个网络下的别名列表,这样该网络中的其他容器除了使用服务名(默认的)外还可使用别名访问该服务中的容器。
    2、ipv4_address/ipv6_address:为加入到该网络的服务指定一个静态 IP。这时在顶级范围中创建该网络时应该包含一个 ipam 选项块,用以配置子网部分。如果要支持 IPv6,还应该指定 enable_ipv6 选项。
    ** pid
    设置 pid 模式为主机 pid 模式。这会让容器和主机共享 PID 地址空间。
    ** ports
    用来公布容器端口。
    ** secrets
    配置服务对某些敏感数据的访问权限。服务范围下的该选项应该与顶层范围下的 secrets 选项同时指定。
    ** security_opt
    覆盖每个容器的默认标记方案。
    ** stop_grace_period
    指定在发送 SIGKILL 信号前,如果没对 SIGTERM 信号(或其他使用 stop_signal 选项设置的停止信号)进行处理时试图停止一个容器要等待的时间限制,默认为 10s。
    ** stop_signal
    设置停止容器时要发送的信号,默认为 SIGTERM。
    ** sysctls
    指定容器中要设置的内核参数。
    ** ulimits
    覆盖容器的默认资源限制。
    ** userns_mode
    禁用此服务的用户命名空间(如果有的话)。
    ** volumes
    指定服务要使用的卷。如果仅针对某一服务,可以只指定卷主机路径。但若要多个服务使用,应该使用在顶层范围下的 volumes 选项中指定的卷名。
分享到:
评论

相关推荐

    docker-compose

    # 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器 - ./images/nginx/sites-enabled:/etc/nginx/sites-enabled - ./images/nginx/cert:/etc/nginx/cert # 加入指定网络 networks: default: # 同一...

    通过es.sh脚本+docker-compos一键部署7.9.3版本的elk日志监控系统

    2、docker-compose一键式部署配置脚本文件 部署方法: 1、下载es.sh+docker-compose一键部署7.9.3elk日志监控系统.zip压缩包 2、先执行es.sh基础环境脚本 sh es.sh 3、执行docker-compose脚本拉取镜像及elk容器服务...

    keycloak-docker-compose-swarm

    docker-compose文件以dockerized方式启动KeyCloak和Postgres 基于Docker Volume的Keycloak主题安装 Docker Swarm Secrets存储密码 SSL配置,允许通过https服务密钥隐藏 自定义主题选项 入门 Docker群将提供所有...

    docker-ci:docker-ci是一个docker程序,它使您可以在docker-compose文件中使用标签进行轻松的持续集成

    它使用标签设置不同的选项以为每个容器启用Docker-ci。 Docker-CI监视容器的创建,这意味着您不必在更新容器配置时重新启动它。 Docker-CI然后将创建与此模式相对应的路由: http(s)://0.0.0.0[:port]/deploy/:...

    compose-addons:补充docker-compose功能集的工具

    给定docker-compose.yml文件,在include部分中获取每个配置,然后将其合并到基本的docker-compose.yml中。 如果任何包含的文件具有包含节,则继续提取并合并其中的每个节,直到没有其他文件要包含。 用例 如果您...

    docker-quick-stack:使用单个脚本,在各种环境中部署docker-compose堆栈

    去做[]配置ELK堆栈以使用新的目录布局[]添加更好的Phing支持用法注意-如果这是您第一次使用Docker,建议您阅读的语法说明,但是docker-compose.yml和docker-compose.yml docker-compose-developer-php7.yml文件中也...

    ansible-docker:安装使用Ansible配置Docker和Docker Compose

    使用PIP安装Docker Compose(支持版本固定) 安装docker PIP封装所以Ansible的docker_*模块工作管理Docker注册表登录凭证配置1个或多个用户以运行Docker而无需root访问权限配置Docker守护程序的选项和环境变量配置...

    etherpad-silkkycloud

    etherpad-silkkycloud 为etherpad.silkky.cloud制作的Etherpad docker-compose文件用法:重要的: 您将需要一个有效的traefik容器才能使用它。 您的traefik配置可能需要更改才能与docker-compose.yml文件一起使用。 ...

    bitnami-docker-owncloud:适用于ownCloud的Bitnami Docker映像

    DR $ curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-owncloud/master/docker-compose.yml > docker-compose.yml$ docker-compose up -d 您可以在“部分中找到默认凭据和可用的配置选项。...

    wordpress-docker-compose

    -环境和配置设置选项 - -compose使用的环境变量声明 -http或https(通过“加密”)提供您的内容 -安全套接字层加密选项 -使用SSL证书加密(关于DNS注册假设的重要) -如何续订加密证书 -部署您的WordPress网站 -...

    docker-etherpad:高度可配置的Etherpad Docker容器

    环境变量这些环境变量中的大多数都在etherpad配置文件中使用,并直接对应于名称相似的配置选项。 请参阅示例Etherpad配置文件。基本配置选项: ETHERPAD_TITLE (默认: Etherpad ) 此Etherpad实例的标题。 ...

    docker-samba:[ROMirror] Docker中的Samba服务器

    /samba/smb.conf :容器使用的Samba配置文件。 /samba/[share] :请将您的Samba共享文件夹映射到容器中的/samba/ 。 环境变量 GROUPS :组配置。 格式: [group name],[group id] 。 用;连接多个组配置; 。 USERS ...

    knowage-docker:使用Savantly首选项的知识图像

    了解知识的Docker映像 带有Prometheus导出器,JMX暴露和改进的内存配置的修改后的fork。... 如果要以最低配置在本地计算机上运行Knowage以进行测试,请在带有docker-compose.yml文件的文件夹内运行以下命令

    module-logger-elasticsearch:Nestjs Elasticsearch Logger模块

    Nestjs Elasticsearch Logger 安装 npm install @nestjs.pro/logger-...在您的AppModule导入ElasticsearchLoggerModule ,并AppModule传递一些配置选项: @ Module ( { imports : [ ElasticsearchLoggerModule

    mts-services

    所有微服务的基本仓库 使用docker compose在本地运行 选项1(默认)-所有服务均处于本地模式,没有服务发现或... 在此示例中,选择了“ dev”,但是可以设置任何配置文件。 export PROFILE=dev docker-compose up -d

    docker-cmdbuild:这是CMDBuild for Docker所有版本的非官方(已更新!)存储库

    从cmdbuild 2.4.0开始,我将停止添加带有链接选项的docker-compose文件 从10/2016起,我将停止添加tomcat 6 dockerfile。 请在上打开问题 我建议将最新版本的cmdbuild与Tomcat 7一起使用 您想要最新版本吗? ...

    arweave-node:arweave-node-docker

    编织文件:README.md编结节点建立用于部署的图像运行docker-compose build --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" 等待图像生成运行部署的映像该图像采用以下参数: RUNMODE (仅适用于docker-compose...

    wikibase-tools:用于Wikibase的工具

    : Wikibase-docker说明: : 用法设置配置选项例如,请参阅config.py跑步./run.sh 细节run.sh采取的步骤: 下载docker-compose.yml的新副本配置YAML:使用config.py中的设置编辑docker-compose.yml文件启动Docker...

    lucee-docker:使用Nginx Web服务器在Ubuntu上使用Lucee脚本语言的Docker容器

    的内容复制docker-compose.yml.sample到一个新的文件名为docker-compose.yml 。 (注意:执行此操作后不要删除示例文件,因为它仍在源代码管理中。) 在docker-compose.yml : 根据数据源( DB_TYPE , DB_HOST等)...

    swarm-launcher:允许在docker swarm中启动容器的docker映像,其中选项通常在swarm模式下不可用

    您可以使用环境变量来配置内部启动的服务,也可以提供自己的/docker-compose.yml文件。 无论哪种方式, swarm-launcher都会负责项目的设置,拆除和清理。 支持的架构 该映像支持以下体系结构: linux/amd64 ...

Global site tag (gtag.js) - Google Analytics