Docker Compose 配置文件常用指令
Docker Compose 配置文件常用指令
YAML文件格式及编写注意事项
- YAML是一种标记语言很直观的数据序列化格式,可读性高。类似于XML数据描述语言,语法比XML简单的很多。
- YAML数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来。
YAML文件格式注意事项:
- 1. 不支持制表符tab键缩进,需要使用空格缩进
- 2. 通常开头缩进2个空格
- 3. 字符后缩进1个空格,
# 构建镜像上下文路径
build
build: ./dir build:
context: ./dir
dockerfile: Dockerfile-alternate
args:
buildno: 1
build: ./dir
image: webapp:tag
# 指定Dockefile文件名
dockerfile
build:
context: .
dockerfile: Dockerfile-alternate
# 来自镜像
image
image: redis
image: ubuntu:14.04
image: tutum/influxdb
image: example-registry.com:4000/postgresql
image: a4bc65fd
# 构建参数。在Dockerfile中指定的参数
args
build:
context: .
args:
buildno: 1
gitcommithash: cdc3b19 build:
context: .
args:
- buildno=1
- gitcommithash=cdc3b19
# 覆盖默认命令
command
command: bundle exec thin -p 3000
command: ["bundle", "exec", "thin", "-p", ""]
# 自定义容器名称。如果自定义名称,则无法将服务scale到1容器之外
container_name
container_name: my-web-container
# 指定与部署和运行相关的配置。限版本3
deploy
version: ''
services:
redis:
image: redis:alpine
deploy:
replicas: 6
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
# 服务之间的依赖,控制服务启动顺序。正常是按顺序启动服务
depends_on
version: ''
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
# 自定义DNS服务器,可以是单个值或列表
dns
dns: 8.8.8.8
dns:
- 8.8.8.8
- 9.9.9.9
# 覆盖entrypoin
entrypoint
entrypoint: /code/entrypoint.sh entrypoint:
- php
- -d
- zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
- -d
- memory_limit=-1
- vendor/bin/phpunit
# 从文件添加环境变量,可以是单个值或列表
env_file
env_file: .env env_file:
- ./common.env
- ./apps/web.env
- /opt/secrets.env
# 添加环境变量,可以是数组或字典。布尔值用引号括起来。
environment
environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET: environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRET
# 声明容器服务端口
expose
expose:
- ""
- ""
# 连接到另一个容器
links
web:
links:
- db
- db:database
- redis
# 连接Compose之外的容器
external_links
external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql
# 添加主机名映射,与—addhost相同
extra_hosts
extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"
# 记录该服务的日志。与—logdriver相同
logging
logging:
driver: syslog
options:
syslog-address: "tcp://192.168.0.42:123"
# 网络模式,与—net相同
network_mode
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
# 要加入的网络。
networks
services:
some-service:
networks:
- some-network
- other-network
# 在加入网络时为该服务指定容器的静态IP地址
aliases
ipv4_address,ipv6_address
version: '2.1' services:
app:
image: busybox
command: ifconfig
networks:
app_net:
ipv4_address: 172.16.238.10
ipv6_address: 2001:3984:3989::10 networks:
app_net:
driver: bridge
enable_ipv6: true
ipam:
driver: default
config:
-
subnet: 172.16.238.0/24
-
subnet: 2001:3984:3989::/64
# 将PID模式设置主机PID模式,与宿主机共享PID地址空间。pid: “host”
pid
pid: "host"
# 暴露端口,与-p相同。但端口不低于60
ports
ports:
- ""
- "3000-3005"
- "8000:8000"
- "9090-9091:8080-8081"
- "49100:22"
- "127.0.0.1:8001:8001"
- "127.0.0.1:5000-5010:5000-5010"
- "6060:6060/udp"
# 再容器内设置内核参数,可以是数组或字典
sysctls
sysctls:
net.core.somaxconn: 1024
net.ipv4.tcp_syncookies: 0 sysctls:
- net.core.somaxconn=1024
- net.ipv4.tcp_syncookies=0
# 覆盖容器的默认ulimits
ulimits
ulimits:
nproc: 65535
nofile:
soft: 20000
hard: 40000
# 挂载一个目录或一个已存在的数据卷容器到容器
volumes
version: "3.2"
services:
web:
image: nginx:alpine
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static
version: '3.3'
services:
redis:
image: 192.168.1.81:/redis:4.0.
volumes:
- type: volume
source: redis-nfs
target: /usr/local/redis-4.0./data
volume:
nocopy: true volumes:
redis-nfs:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.81,vers=4,soft,timeo=180,bg,tcp,rw"
device: "192.168.1.81:/data"
创建NFS持久化
# 默 认 no , always|onfailure|unless-stopped
restart
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped
# 主机名
hostname
domainname: foo.com
hostname: foo
ipc: host
mac_address: 02:42:ac:11:65:43
# 工作目录
working_dir
user: postgresql
working_dir: /code
更多命令:https://docs.docker.com/compose/compose-file/compose-file-v2/
Docker Compose 配置文件常用指令的更多相关文章
- Docker Compose配置文件详解(V3)
Docker Compose配置文件是Docker Compose的核心,用于定义服务.网络和数据卷.格式为YAML,默认路径为./docker-compose.yml,可以使用.yml或.yaml扩 ...
- Docker Compose 配置文件详解
先来看一份 docker-compose.yml 文件,不用管这是干嘛的,只是有个格式方便后文解说: version: '2' services: web: image: dockercloud/he ...
- docker之Dokcerfile 常用指令
一.Docker语法 Docker语法: FROM 基础镜像base image RUN 执行命令 ADD 添加文件 COPY 拷贝文件 CMD 执行命令 EXPOSE 执行命令 WORKDIR 指定 ...
- Docker学习笔记之常用的 Docker Compose 配置项
0x00 概述 与 Dockerfile 一样,编写 Docker Compose 的配置文件是掌握和使用好 Docker Compose 的前提.编写 Docker Compose 配置文件,其本质 ...
- Docker学习笔记 - Docker Compose 脚本命令
Docker Compose 配置文件包含 version.services.networks 三大部分,最关键的是 services 和 networks 两个部分, version: '2' se ...
- 009.Docker Compose部署及基础使用
一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配 ...
- Docker学习笔记之编写 Docker Compose 项目
0x00 概述 通过阅读之前的小节,相信大家对 Docker 在开发中的应用已经有了一定的了解.作为一款实用的软件,我们必须回归到实践中来,这样才能更好地理解 Docker 的实用逻辑和背后的原理.在 ...
- Docker学习笔记之使用 Docker Compose 管理容器
0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能 ...
- 利用docker compose启动gitlab及runner
添加docker compose配置文件 新建文件docker-compose.yml,输入如下内容: gitlab: image: 'gitlab/gitlab-ce:latest' contain ...
随机推荐
- C# 鼠标移动Winform窗体内或者panel容器内的控件 显示虚线/实现虚线框来确定位置
C# 鼠标移动WinForm窗体或者panel容器内的控件 移动虚线/实现虚线框来确定位置 1.用到的方法介绍 今天,根据领导指示指导移动容器内的控件,生成虚线框,使用 ControlPaint.Dr ...
- android 常用框架
网络框架:okhttp.volley.android-async-http图片框架:Picasso.Fresco.Glide.Android-Universal-Image-Loader缓存框架:Di ...
- TemplateBuilder Android Studio
TemplateBuilder:是Android Studio的一个开发模板,大大提高开发效率.
- ajax 上传文件,监听进度(progress)
mdn 前端代码 github <body class="m-2"> <label for="a" class="btn btn-p ...
- 我的WafBypass之道(upload篇)
0x00 前言 玩waf当然也要讲究循序渐进,姊妹篇就写文件上传好了,感觉也就SQLi和Xss的WafBypass最体现发散性思维的,而文件上传.免杀.权限提升这几点的Bypass更需要的是实战的经验 ...
- 多线程之批量插入小demo
多线程之批量插入 背景 昨天在测试mysql的两种批量更新时,由于需要入库大量测试数据,反复执行插入脚本,过程繁琐,档次很低,测试完后我就想着写个批量插入的小demo,然后又想写个多线程的批量插入的d ...
- DbSet<T>().Where(e => true)之后再想Include怎么办?
DbSet<T>().Where(e => true)之后再想Include怎么办? 引用:https://www.cnblogs.com/godbell/p/7348411.htm ...
- 浅谈Vue 项目性能优化 经验
我优化公司的项目总结的几点: 1.先查看引入的图片大小,如果太大了,可以压缩,压缩路径:https://zhitu.isux.us/ 2.代码包优化, 待下项目开发完成.进行打包源码上线环节,需要对项 ...
- eclipse与hadoop-eclipse-plugin之间的版本对应关系
eclipse与hadoop-eclipse-plugin之间,版本互相不兼容,或者说,版本要求严格. 把hadoop-eclipse-plugin复制到eclipse的plugins目录下以后,如果 ...
- Gym 101873C - Joyride - [最短路变形][优先队列优化Dijkstra]
题目链接:http://codeforces.com/gym/101873/problem/C 题意: 这是七月的又一个阳光灿烂的日子,你决定和你的小女儿一起度过快乐的一天.因为她真的很喜欢隔壁镇上的 ...