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. JS 一张图理解prototype、proto和constructor的关系

    转载于原文地址:https://www.cnblogs.com/xiaohuochai/p/5721552.html(感谢大神的总结) 前面的话 javascript里的关系又多又乱.作用域链是一种单 ...

  2. 【MySQL】随机获取数据的方法,支持大数据量

    在mysql中带了随机取数据的函数,在mysql中我们会有rand()函数,很多朋友都会直接使用,如果几百条数据肯定没事,如果几万或百万时你会发现,直接使用是错误的.下面我来介绍随机取数据一些优化方法 ...

  3. ToolBar样式颜色,图标设置

    extends:http://blog.csdn.net/w1054993544/article/details/48339565 <resources> <style name=& ...

  4. js中的运算符优先级

    运算符有何很多,基本的可能都比较熟,单有些优先级很难记住.建议使用“()”将复杂的运算表达式区分好优先级. 我给运算符优先级做了一首小打油诗. 括号成员new函数 直new后置累计数 单目幂算乘除模 ...

  5. 网站favicon图标的显示问题

    今天在微信开发者工具发现一个错误,说是找不到favicon.ico这个文件. 这个就是标签式浏览器显示在页面title前面的小图标,移动端也没什么用,所以一直没在意,今天有空就研究了一下,发现还是有点 ...

  6. oracle编码转换:AL32UTF8->ZHS16GBK

    --修改Oracle数据库字符集为utf-8: SQL>conn / as sysdba; SQL>shutdown immediate; SQL>startup mount; SQ ...

  7. SetTimer API函数

    位于user32.dll中,可以每隔一段时间执行一段时间执行一件事的时候,可以使用它. 使用定时器,通常告诉Windows一个时间间隔,然后Windows以此时间间隔周期性触发程序. 发送WM_TIM ...

  8. 剑指offer——python【第56题】删除链表中的重复节点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  9. Changing Ethernet Media Speed for AIX

    ITS UNIX Systems Changing Ethernet Media Speed for AIX First you need to find out the device name of ...

  10. 2018-2019-2 20175320实验一《Java开发环境的熟悉》实验报告

    2018-2019-2 20175320实验一<Java开发环境的熟悉>实验报告 一.实验步骤及内容 (一)带包程序的编译运行 1.使用mkdir命令创建如图所示目录 2.进入exp1下的 ...