Docker三剑客之docker-compose

Docker三剑客之docker-compose

Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。

通过之前的介绍,我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。

Compose 恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

Compose 中有两个重要的概念:

  • 服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

  • 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。

使用微服务架构的系统一般包含若干个微服务,每个微服务一般部署多个实例。如果每个服务都要手动启停,那么效率低,维护量大。

命令

docker-compose.yml常用命令

docker-compose.yml格式为:

version: "3"
services:
  webapp:
    image: examples/web
    ports:
      - "80:80"
    volumes:
      - "/data"

注意每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)等来自动构建生成镜像。

  • build

    指定 Dockerfile 所在文件夹的路径(可以是绝对路径,或者相对 docker-compose.yml 文件的路径)。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。

    version: '3'
    services:
    webapp:
        build: ./dir
    

    你也可以使用 context 指令指定 Dockerfile 所在文件夹的路径。
    使用 dockerfile 指令指定 Dockerfile 文件名。

    version: '3'
    services:
    webapp:
        build:
        context: ./dir
        dockerfile: Dockerfile-alternate
    
  • command

    覆盖容器启动后默认执行的命令。

    command: echo "hello world"
    
  • dns

    自定义 DNS 服务器。可以是一个值,也可以是一个列表。

    dns: 8.8.8.8
    
    dns:
    - 8.8.8.8
    - 114.114.114.114
    
  • dns_search

    配置 DNS 搜索域。可以是一个值,也可以是一个列表。

    dns_search: example.com
    
    dns_search:
    - domain1.example.com
    - domain2.example.com
    
  • expose

    暴露端口,但不映射到宿主机,只被连接的服务访问。

    expose:
    - "3000"
    - "8000"
    
  • image

    指定为镜像名称或镜像 ID。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。

    image: ubuntu
    image: orchardup/postgresql
    image: a4bc65fd
    
  • links

    连接其他服务的容器,可以指定服务名称。

    web:
    links:
        -db
        -redis
    
  • ports

    暴露端口信息。
    使用宿主端口:容器端口格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。

    ports:
    - "3000"
    - "8000:8000"
    - "49100:22"
    - "127.0.0.1:8001:8001"
    
  • volumes

    数据卷所挂载路径设置。可以设置宿主机路径 (HOST:CONTAINER) 或加上访问模式。
    加载本地目录下的配置文件到容器目标地址下。

    volumes:
    - /var/lib/mysql
    - cache/:/tmp/cache
    - ~/configs:/etc/configs/:ro
    
  • environment
    设置环境变量。你可以使用数组或字典两种格式。

    只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值