docker compose文件常用指令大全

前言

写yaml/yml文件相当于把运行的docker run命令保存下来,方便使用

#######################################################

1、images

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

用法:

image: ubuntu
image: orchardup/postgresql
image: a4bc65fd

2、ports

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

用法:

ports:
 - "3000"
 - "8000:8000"
 - "127.0.0.1:8001:8001"

3、extra_hosts

类似 Docker 中的 --add-host 参数,配置静态DNS解析。

用发:

extra_hosts:
 - "googledns:8.8.8.8"
 - "dockerhub:52.1.157.61"

启动后,会在容器的/etc/hosts 文件中添加如下两条条目

8.8.8.8 googledns
52.1.157.61 dockerhub

4、restart

指定容器退出后的重启策略为始终重启。
在生产环境中推荐配置为 always 或者 unless-stopped

用法:

restart: always
restart: unless-stopped

5、hostname && mac_address && domainname

指定容器中搜主机名、mac 地址、索域名等。

用法:

hostname: my_container1
mac_address: 08-00-27-00-0C-0A
domainname: your_website.com

6、labels

打标签,为容器添加 Docker 元数据(metadata)信息。
是解释型语句

用法:

labels:
  com.startupteam.description: "webapp for a startup team"
  service: ceshi_nginx

7、logging

配置日志选项。

用法:

logging:
  driver: syslog
  testions:
    syslog-address: "tcp://192.168.0.42:123"

常用下面这种:

logging:
  options:
    labels: "service"
    max-size: "100m"
    max-file: "4"

目前支持三种日志驱动类型。

driver: "json-file"
driver: "syslog"
driver: "none"

testions 配置日志驱动的相关参数

testions:
  max-size: "200k"
  max-file: "10"

8、volumes

数据卷所挂载路径设置。
可以设置为宿主机路径(HOST:CONTAINER)
或者数据卷名称(VOLUME:CONTAINER),
并且可以设置访问模式 (HOST:CONTAINER:ro)。
该指令中路径支持相对路径。

用法:

volumes:
 - /var/lib/mysql
 - cache/:/tmp/cache
 - ~/configs:/etc/configs/:ro

如果路径为数据卷名称,必须在文件中配置数据卷。(不建议用)

version: "3"

services:
  my_src:
    image: mysql:8.0
    volumes:
      - mysql_data:/var/lib/mysql

volumes:
  mysql_data:  

9、deploy(swarm专用)

deploy参数是Docker Compose针对Swarm集群部署提供的,
子参数 专门用于指定与服务部署和运行相关的配置

用法:

deploy:
  replicas: 1
  restart_policy:
    condition: on-failure
    delay: 10s
    max_attempts: 3
    window: 120s
9.1 mode(可缺省)

部署模式
global:强制在每个 node 上都运行一个且最多一个副本
replicas:副本模式,随机分配

9.2 replicas

表示服务实例的副本数量

9.3 restart_policy

4、restart 只是该属性配置在deploy参数下,并只在集群环境下生 效。
有子参数如下:

9.3.1 condition

表示服务重启的条件,值有none、on-failure和 any

9.3.2 delay

表示重启服务之间等待时间,默认为0

9.3.3 max_attempts

表示失败后尝试重启的次数

9.3.4 window

表示等待多久来确定服务是否启动成功

10、depends_on

解决容器的依赖、启动先后的问题。
以下例子中会先启动 redis db 再启动 web,
但是web 服务不会等待 redis db 「完全启动」之后才启动

用法:

services:
  web:
    build: .
    depends_on:
      - db
      - redis

11、environment(带密码服务的常用)

设置环境变量。你可以使用数组或字典两种格式。
只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据

用法:

environment:
  RACK_ENV: development
  SESSION_SECRET:

environment:
  - RACK_ENV=development
  - SESSION_SECRET

12、secrets

存储敏感数据,例如 mysql 服务密码

用法:

  secrets:
    - db_root_password
    - my_other_secret

13、healthcheck

通过命令检查容器是否健康运行

用法:

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost"]
  interval: 1m30s
  timeout: 10s
  retries: 3

14、networks

配置容器连接的网络

用法:

version: "3"
services:

  some-service:
    networks:
     - some-network
     - other-network

networks:
  some-network:
  other-network:

15、command

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

用法:

command: echo "hello world"

16、placement

平台扩展名,常用在deploy下面,子参数constraints做约束

用法:

  placement:
    constraints: [node.hostname == node2]

以上命令已经够用,其他的可参考:

https://yeasy.gitbook.io/docker_practice/compose/compose_file#networks
https://docs.docker.com/compose/compose-file/
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值