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 配置文件常用指令的更多相关文章

  1. Docker Compose配置文件详解(V3)

    Docker Compose配置文件是Docker Compose的核心,用于定义服务.网络和数据卷.格式为YAML,默认路径为./docker-compose.yml,可以使用.yml或.yaml扩 ...

  2. Docker Compose 配置文件详解

    先来看一份 docker-compose.yml 文件,不用管这是干嘛的,只是有个格式方便后文解说: version: '2' services: web: image: dockercloud/he ...

  3. docker之Dokcerfile 常用指令

    一.Docker语法 Docker语法: FROM 基础镜像base image RUN 执行命令 ADD 添加文件 COPY 拷贝文件 CMD 执行命令 EXPOSE 执行命令 WORKDIR 指定 ...

  4. Docker学习笔记之常用的 Docker Compose 配置项

    0x00 概述 与 Dockerfile 一样,编写 Docker Compose 的配置文件是掌握和使用好 Docker Compose 的前提.编写 Docker Compose 配置文件,其本质 ...

  5. Docker学习笔记 - Docker Compose 脚本命令

    Docker Compose 配置文件包含 version.services.networks 三大部分,最关键的是 services 和 networks 两个部分, version: '2' se ...

  6. 009.Docker Compose部署及基础使用

    一 Docker Compose概述 Compose是一个用于定义和运行多容器Docker应用程序的工具.使用Compose,您可以使用YAML文件来配置应用程序的服务.然后,使用单个命令,您可以从配 ...

  7. Docker学习笔记之编写 Docker Compose 项目

    0x00 概述 通过阅读之前的小节,相信大家对 Docker 在开发中的应用已经有了一定的了解.作为一款实用的软件,我们必须回归到实践中来,这样才能更好地理解 Docker 的实用逻辑和背后的原理.在 ...

  8. Docker学习笔记之使用 Docker Compose 管理容器

    0x00 概述 通过之前的介绍,我们已经基本掌握了构建.运行容器的方法,但这还远远不够,由于 Docker 采用轻量级容器的设计,每个容器一般只运行一个软件,而目前绝大多数应用系统都绝不是一个软件所能 ...

  9. 利用docker compose启动gitlab及runner

    添加docker compose配置文件 新建文件docker-compose.yml,输入如下内容: gitlab: image: 'gitlab/gitlab-ce:latest' contain ...

随机推荐

  1. 三维计算机视觉 —— 中层次视觉 —— RCNN Family

    RCNN是从图像中检测物体位置的方法,严格来讲不属于三维计算机视觉.但是这种方法却又非常非常重要,对三维物体的检测非常有启发,所以在这里做个总结. 1.RCNN - the original idea ...

  2. poj 1269

    水题.判断两条直线位置关系. 考虑平行的情况,那么 四边形的面积会相等,重合的话,四边形的面积相等且为0. 除去这两种就一定有交点. #include <cstdio> #include ...

  3. 最小生成树 prime+heap

    改一个错误真不容易,刚开始没有加上used数组,没有判断每个顶点是否已经加入到数组当中,结果同一个顶点被pop不止一次. struct edge{int to,cost;}; typedef pair ...

  4. 深入理解Java虚拟机(笔记)

    内存分配: 为对象分配内存有两种方式,第一种是“指针碰撞”,也就是把内存分为两边,一边是已使用区域,另一边是未分配区域,分界线用指针记录,当要分配内存时,只需把指针向未分配区域移动需要的空间即可,通常 ...

  5. Java9之HashMap与ConcurrentHashMap

    HashMap在Java8之后就不再用link data bins了,而是转为用Treeify的bins,和之前相比,最大的不同就是利用了红黑树,所以其由 数组+链表+红黑树 组成.: * This ...

  6. mac sed 使用踩坑实录

    [转自别处] 比如我sed想做文件原地的替换,但是怎么写都出错,错误提示还莫名其妙,后来多方搜索才知道Mac上的sed如果参数有-i就必须加上备份指令,即-i后添加任意字符,那些字符就作为备份文件的后 ...

  7. Linux 下安装mysql 5.7

    Linux 下安装mysql 5.7 本人首次安装时按照菜鸟教程的步骤一步一步来的,结果意外的是 装成5.6了,而且各种无厘头的问题,例如无法启动... 本文参照 大佬:‘这个名字想了很久~’ 的&l ...

  8. 2018今日头条杯 E-Jump a Jump

    Problem E. Jump A JumpInput file: standard inputOutput file: standard outputTime limit: 1 secondsMemor ...

  9. PHP面试大全 基础篇100道问题

    2017年3月7日14:23:21 其实计划很久但是移植没时间去收集和处理弄成一个完整的文件 SVN地址: https://git.oschina.net/zxadmin/live_z 目前基础部分更 ...

  10. The way to unwind the stack on Linux EABI

    I. probe the stack frame structure The original idea is to unwind the function call stack according ...