`

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&docker-compose 19.03.14二进制安装

    3. **设置环境变量**:对于某些系统,可能需要设置`DOCKER_OPTS`环境变量以指定Docker守护进程的配置选项。 4. **启动Docker**:运行Docker守护进程,检查是否正常启动,可以通过`docker info`命令查看Docker的运行...

    Docker容器技术-Docker-compose使用案例.pptx

    其核心是`docker-compose.yml`文件,这是一个YAML格式的配置文件,用于描述服务、网络和卷等组件,以及它们之间的依赖关系。 ### Docker-compose入门案例:使用Docker Compose运行Tomcat容器 #### 创建`docker-...

    PyPI 官网下载 | docker-compose-1.15.0rc1.tar.gz

    在`docker-compose.yml` 文件中,你可以配置服务、网络和卷,这些定义将指导`docker-compose`如何启动和管理相关容器。例如,你可以声明服务间的依赖关系、设置环境变量、配置端口映射、定义数据卷等。 在`docker-...

    docker-compose php+swoole构建包

    通过一个YAML文件(即docker-compose.yaml)来配置服务,简化了容器化应用的部署和管理。 【描述】提到的"包含nginx.conf,php.ini,php-fpm.conf等"表明这个构建包不仅包含了PHP的基础环境,还配置了Nginx web...

    docker-compose2.5

    Docker Compose的核心在于`docker-compose.yml`文件,这是一个定义服务、网络和卷的配置文件,用于一次性启动整个应用程序环境。在2.5版本中,这个配置文件格式得到了进一步优化,使得服务间的依赖关系更加清晰,...

    docker-compose

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

    apollo-docker-quick-start-files

    每个服务都将指定其镜像、端口映射、环境变量、依赖关系和其他配置选项。例如,可能需要设置 Apollo 的环境变量,如 `APOLLO_ENV`、`LOCAL_IP` 和 `CONFIG_SERVICE_URL` 等,以便服务之间能够正确通信。 `sql` 文件...

    通过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容器服务...

    docker-compose v1.25.0

    此外,Docker Compose v1.25.0引入了对Docker Compose文件格式v3.8的支持。这个版本的文件格式增加了新的特性,如`healthcheck`,用于检查服务的健康状态,以及`secrets`和`configs`,用于管理应用的敏感信息。这些...

    fish-docker-compose:docker-compose的鱼壳补全

    它通过YAML文件(docker-compose.yml)来配置服务,允许开发者定义环境变量、网络、卷等,并通过单一命令管理这些服务的生命周期。然而,原生的Docker Compose命令行接口并不支持自动补全功能,这对于频繁使用的用户...

    docker-kafka-cluster集群安装

    通过理解Kafka的配置选项,我们可以更好地定制和优化集群以满足具体需求。结合Zookeeper管理Kafka的元数据,可以在分布式环境中实现高可用性和容错性。对于希望在Docker容器中搭建Kafka集群的开发者来说,这是一个...

    docker-compose-healthcheck:如何使用docker-compose healthcheck在启动Y之前等待容器X

    `docker-compose.yml` 文件是配置服务、网络和卷的中心文档。在这个场景中,我们将深入探讨如何利用Docker Compose的`healthcheck`特性来确保在启动依赖服务Y之前,关键服务X(如PostgreSQL或Kong)已经准备好接受...

    metabase-compose:使用compose运行Metabase的dockerized解决方案

    通过一个`docker-compose.yml`文件,可以配置服务、网络和卷,实现一键部署和管理整个应用栈。 **Metabase与Docker Compose的结合** "metabase-compose"项目是将Metabase集成到Docker Compose环境中的实践,它简化...

    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 Compose version v2.12.2

    Docker Compose是Docker公司推出的一个用于定义和运行多容器Docker应用的工具,它通过YAML文件来配置服务,然后使用一个命令就可以启动和管理整个应用。Docker Compose v2.12.2是这个工具的一个版本更新,带来了多项...

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

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

    docker-compose-airflow-authentication:模板通过docker-compose通过用户和密码身份验证在docker中启动气流

    Docker Compose则允许我们通过YAML文件(如`docker-compose.yml`)定义和运行多容器的Docker应用,简化了配置和管理过程。 2. Apache Airflow概述: Apache Airflow是一个开源的工作流管理系统,用于编排数据管道...

Global site tag (gtag.js) - Google Analytics