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. C# 鼠标移动Winform窗体内或者panel容器内的控件 显示虚线/实现虚线框来确定位置

    C# 鼠标移动WinForm窗体或者panel容器内的控件 移动虚线/实现虚线框来确定位置 1.用到的方法介绍 今天,根据领导指示指导移动容器内的控件,生成虚线框,使用 ControlPaint.Dr ...

  2. android 常用框架

    网络框架:okhttp.volley.android-async-http图片框架:Picasso.Fresco.Glide.Android-Universal-Image-Loader缓存框架:Di ...

  3. TemplateBuilder Android Studio

    TemplateBuilder:是Android Studio的一个开发模板,大大提高开发效率.

  4. ajax 上传文件,监听进度(progress)

    mdn 前端代码 github <body class="m-2"> <label for="a" class="btn btn-p ...

  5. 我的WafBypass之道(upload篇)

    0x00 前言 玩waf当然也要讲究循序渐进,姊妹篇就写文件上传好了,感觉也就SQLi和Xss的WafBypass最体现发散性思维的,而文件上传.免杀.权限提升这几点的Bypass更需要的是实战的经验 ...

  6. 多线程之批量插入小demo

    多线程之批量插入 背景 昨天在测试mysql的两种批量更新时,由于需要入库大量测试数据,反复执行插入脚本,过程繁琐,档次很低,测试完后我就想着写个批量插入的小demo,然后又想写个多线程的批量插入的d ...

  7. DbSet<T>().Where(e => true)之后再想Include怎么办?

    DbSet<T>().Where(e => true)之后再想Include怎么办? 引用:https://www.cnblogs.com/godbell/p/7348411.htm ...

  8. 浅谈Vue 项目性能优化 经验

    我优化公司的项目总结的几点: 1.先查看引入的图片大小,如果太大了,可以压缩,压缩路径:https://zhitu.isux.us/ 2.代码包优化, 待下项目开发完成.进行打包源码上线环节,需要对项 ...

  9. eclipse与hadoop-eclipse-plugin之间的版本对应关系

    eclipse与hadoop-eclipse-plugin之间,版本互相不兼容,或者说,版本要求严格. 把hadoop-eclipse-plugin复制到eclipse的plugins目录下以后,如果 ...

  10. Gym 101873C - Joyride - [最短路变形][优先队列优化Dijkstra]

    题目链接:http://codeforces.com/gym/101873/problem/C 题意: 这是七月的又一个阳光灿烂的日子,你决定和你的小女儿一起度过快乐的一天.因为她真的很喜欢隔壁镇上的 ...