赞
踩
写yaml/yml文件相当于把运行的docker run命令保存下来,方便使用
#######################################################
指定镜像名称或镜像 ID。
如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
用法:
image: ubuntu
image: orchardup/postgresql
image: a4bc65fd
暴露端口信息。
使用宿主端口:容器端口 (HOST:CONTAINER) 格式,
或者仅仅指定容器的端口(宿主将会随机选择端口)。
用法:
ports:
- "3000"
- "8000:8000"
- "127.0.0.1:8001:8001"
类似 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
指定容器退出后的重启策略为始终重启。
在生产环境中推荐配置为 always 或者 unless-stopped
用法:
restart: always
restart: unless-stopped
指定容器中搜主机名、mac 地址、索域名等。
用法:
hostname: my_container1
mac_address: 08-00-27-00-0C-0A
domainname: your_website.com
打标签,为容器添加 Docker 元数据(metadata)信息。
是解释型语句
用法:
labels:
com.startupteam.description: "webapp for a startup team"
service: ceshi_nginx
配置日志选项。
用法:
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"
数据卷所挂载路径设置。
可以设置为宿主机路径(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:
deploy参数是Docker Compose针对Swarm集群部署提供的,
子参数 专门用于指定与服务部署和运行相关的配置
用法:
deploy:
replicas: 1
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
部署模式
global:强制在每个 node 上都运行一个且最多一个副本
replicas:副本模式,随机分配
表示服务实例的副本数量
同 4、restart
只是该属性配置在deploy参数下,并只在集群环境下生 效。
有子参数如下:
表示服务重启的条件,值有none、on-failure和 any
表示重启服务之间等待时间,默认为0
表示失败后尝试重启的次数
表示等待多久来确定服务是否启动成功
解决容器的依赖、启动先后的问题。
以下例子中会先启动 redis db 再启动 web,
但是web 服务不会等待 redis db 「完全启动」之后才启动
用法:
services:
web:
build: .
depends_on:
- db
- redis
设置环境变量。你可以使用数组或字典两种格式。
只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据
用法:
environment:
RACK_ENV: development
SESSION_SECRET:
environment:
- RACK_ENV=development
- SESSION_SECRET
存储敏感数据,例如 mysql 服务密码
用法:
secrets:
- db_root_password
- my_other_secret
通过命令检查容器是否健康运行
用法:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 1m30s
timeout: 10s
retries: 3
配置容器连接的网络
用法:
version: "3"
services:
some-service:
networks:
- some-network
- other-network
networks:
some-network:
other-network:
覆盖容器启动后默认执行的命令
用法:
command: echo "hello world"
平台扩展名,常用在deploy下面,子参数constraints
做约束
用法:
placement:
constraints: [node.hostname == node2]
以上命令已经够用,其他的可参考:
https://yeasy.gitbook.io/docker_practice/compose/compose_file#networks
https://docs.docker.com/compose/compose-file/
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。