docker-compose详解(七)

089d365e231447f330701cffc31f7392.png

Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它允许用户使用YAML格式的配置文件(通常是docker-compose.yml)来配置应用程序所需的所有服务,并可以通过一个命令来启动或关闭这些容器。

服务配置(接上一篇)

39. volumes

指定所挂载的主机路径或数据卷名称。支持short和long两种格式的语法。可以将主机路径作为单个服务的一部分进行挂载,而无需在顶层volumes配置项中定义。但是如果想要在多个服务之间重用数据卷,需要在顶层volumes配置项中定义一个数据卷名称。

在3版的配置文件格式中的变化:在顶层volumes配置项中定义了数据卷名称并从每个服务的volumes列表中引用了该数据卷。这将替代早期版本的Compose配置文件格式中的volumes_from配置项。

short语法使用通用的[SOURCE:]TARGET[:MODE]格式,SOURCE可以是主机路径或数据卷名称,TARGET为挂载数据卷的容器路径,MODE可以为ro只读模式或rw读写模式(默认)。可以在主机上挂载相对路径,该路径相对于正在使用的Compose配置文件的目录进行扩展,相对路径应始终以.或..开头。例如:

volumes:
  #只指定一个路径,Docker会自动在创建一个数据卷(这个路径是容器内部的)
  - /var/lib/mysql
  #使用绝对路径挂载数据卷
  - /opt/data:/var/lib/mysql
  #使用基于Compose配置文件的相对路径作为数据卷挂载到容器
  - ./cache:/tmp/cache
  #使用基于root用户的相对路径作为数据卷挂载到容器
  - ~/configs:/etc/configs/:ro
  #使用已经存在命名的数据卷挂载到容器
  - datavolume:/var/lib/mysql

long语法支持配置以下short语法中不支持的附加字段:

type:挂载类型,可以为volume、bind、tmpfs或npipe。

source:挂载源,在主机上用于绑定挂载的路径或定义在顶层volumes配置项中的数据卷名称。不适用于tmpfs挂载类型。

target:数据卷挂载在容器中的路径。

read_only:设置数据卷为只读。

bind:配置额外的bind选项。

propagation:用于绑定的传播模式。

volume:配置额外的volume选项。

nocopy:创建数据卷时禁止从容器复制数据。

tmpfs:配置额外的tmpfs选项。

size:tmpfs挂载的大小,以字节为单位。

consistency:挂载的一致性要求,可以为consistent、cached或delegated。其中consistent表示主机和容器具有相同视图。cached表示读取缓存,主机视图是权威的。delegated表示读写缓存,容器视图是权威的。

例如:

version: "3.8"
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - type: volume
        source: mydata
        target: /data
        volume:
          nocopy: true
      - type: bind
        source: ./static
        target: /opt/app/static
networks:
  webnet:
volumes:
  mydata:

2edcaf381bf93219ae668c4e8fd24f75.png

40. 其他配置项

此外,还有domainname、hostname、ipc、mac_address、privileged、read_only、shm_size、stdin_open、tty、user和working_dir这些配置项。它们都是单值配置,和docker run中的对应选项类似。注意mac_address是旧版本配置项。例如:

#指定容器中运行应用的用户名
user: postgresql
#指定容器的工作目录
working_dir: /code
#指定容器中的搜索域名
domainname: foo.com
#指定容器中的主机名
hostname: foo
ipc: host
#指定容器中的mac地址
mac_address: 02:42:ac:11:65:43
#指定容器为特权容器
privileged: true
#指定以只读模式挂载容器的root文件系统,不能对容器内容进行修改
read_only: true
#设置/dev/shm分区的大小
shm_size: 64M
#打开标准输入,可以接受外部输入
stdin_open: true
#分配tty设备用来支持终端登录
tty: true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值