docker-compose.yml包含version、services、networks3大部分

services的书写规则

1.iamge

services:
web:             # 服务名称,用户自定义
image: busybox         # 镜像名称/镜像ID,如果本地不存在compose会拉取镜像   # 以下格式都可
   images: redis
   images: mysql:latest
   images: example-registry.com:4000/postgresql        

2.build-------基于Dockerfile,指定Dockerfile所在路径,Compose会利用它自动构建镜像,然后启动服务容器

# 绝对路径
build: /path/build # 相对路径
build:./build # 设定上下文跟目录,以此目录指定Dockerfile
build:
context: ../
dockerfile: path/Dockerfile # 给Dockerfile构建的镜像命名
build: ./dir
images: nginx:latest # 构建过程中指定环境变量,构建成功后取消
build:
context: .
args:
buildno: 1
password: secret or build:
context: .
args:
- buildno=1
- password=secret ##与ENV不同,ARG允许空值

3.command-------覆盖容器启动后默认执行的命令

command: bundle exec thin -p 3000

or  写成dockerfile的格式

command: [bundle, exec, thin, -p, 3000]

4.container_name-----容器名称

container_name: app

5.depends_on-------容器依赖

# 基于redis和db服务启动web服务
version: ''
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres

6.dns --------

dns: 8.8.8.8

or

dns:
- 8.8.8.8
- 9.9.9.9 dns_search: example.com
dns_search:
- xxxx
- xxxx

7. tmpfs--------挂在临时目录到容器内部,与run参数效果一致

tmpfs: /run
tmpfs:
- /run
- /tmp

8.entrypoint--------覆盖Dockerfile中ENTRYPOINTmingling

entrypoint: /code/entrypoint.sh

# 
entrypoint: 
- php
- -d

9.env_file--------指定配置文件,设置compose的变量(可通过docker-compose -f FILE指定配置文件)

env_file: .env
# 若与environment指令冲突,以后者为准 # 可设置多个
env_file:
- ./xx.env
- xx.env # 此变量不对build构建过程生效

10.environment--------设置镜像变量,启动后的容器会包含这些变量设置

environment:
RACK_ENV: development
SHOW: 'true'
SESSION_SECRET: environment:
- RACK_ENV=development
- SHOW=true
- SESSION_SECRE

11.external_links-------------让compose项目里面的容器链接到项目配置外部的容器(外部容器中必须至少有一个容器链接到项目内服务的同一个网络里)

external_links:
- redis_1
- project_db_1:mysql
- project_db_1:postgresql

12.exra_hosts-----------添加主机名标签(向/etc/hosts文件中添加纪录)

extra_hosts:
- "mysql:ip"
- "nginx:ip" # 启动容器后查看内部hosts
ip mysql
ip nginx

13.links-----------链接到其它服务器中的容器

links:
- db
- db:mysql
- redis
# 使用的别名会自动在容器的/etc/hosts里创建
ip db
ip mysql
ip redis

14.logging--------配置日志服务

logging:
driver: syslog
options:
syslog-address: "tcp://ip" # 默认的dirver是json-file,可通过docker-compose logs显示日志

15.ports---------映射端口(HOST:CONTAINER)

ports:
- ""
- "8000:80"
- "2222:22"
- "127.0.0.1:8080:8080"

16.volumes-------挂载一个目录或者已经存在的数据卷容器(HOST:CONTAINER/HOST:CONTAINER:ro,后者设定数据卷只读,可保护宿主机器的文件系统)

volumes:
// 只是指定一个路径,Docker 会自动在创建一个数据卷(这个路径是容器内部的)。
- /var/lib/mysql // 使用绝对路径挂载数据卷
- /opt/data:/var/lib/mysql // 以 Compose 配置文件为中心的相对路径作为数据卷挂载到容器。
- ./cache:/tmp/cache // 使用用户的相对路径(~/ 表示的目录是 /home/<用户目录>/ 或者 /root/)。
- ~/configs:/etc/configs/:ro // 已经存在的命名的数据卷。
- datavolume:/var/lib/mysql # 从其他容器或者服务挂在数据卷
volumes_from:
- service_name
- service_name: ro
- container: container_name
- container: container_name:rw 

17.network_mode-------网络模式:

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

18.networks----------加入指定网络

services:
some-service:
networks:
- some-network
- other-network

docker compose常用命令

docker-compose up -d  # 在后台启动服务

docker-compose ps   # 查看启动的服务

docker-compose stop #停止服务

#查看帮助
docker-compose -h # -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d #启动所有容器,-d 将会在后台启动并运行所有的容器
docker-compose up -d #停用移除所有容器以及网络相关
docker-compose down #查看服务容器的输出
docker-compose logs #列出项目中目前的所有容器
docker-compose ps #构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务
docker-compose build #拉取服务依赖的镜像
docker-compose pull #重启项目中的服务
docker-compose restart #删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器。
docker-compose rm #在指定服务上执行一个命令。
docker-compose run ubuntu ping docker.com #设置指定服务运行的容器个数。通过 service=num 的参数来设置数量
docker-compose scale web=3 db=2 #启动已经存在的服务容器。
docker-compose start #停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。
docker-compose stop

docker-compose.yml的使用的更多相关文章

  1. Docker Compose YML文件配置

    Docker Compose YML 默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来 ...

  2. docker compose yml 文件常用字段简介

    常用参数: version # 指定 compose 文件的版本 services # 定义所有的 service 信息, services 下面的第一级别的 key 既是一个 service 的名称 ...

  3. Docker Compose yml

    Wordpress + Mysql version: '3' services: db: image: mysql:latest volumes: - db_data:/var/lib/mysql e ...

  4. Docker Compose 创建yml 简单试例

    Docker Compose 创建yml 简单试例 Docker Compose 文件使用格式版本需要与Docker版本对应可在官网内查找 查找地址:https://docs.docker.com/c ...

  5. docker内程序如何读取dockerfile和compose.yml中设置的环境变量

    docker内程序如何读取dockerfile和compose.yml中设置的环境变量 背景 compose文件中配置了服务A和服务B,其中B服务调用了A服务的接口,那么B的实现代码中该如何调用A的服 ...

  6. 25.docker compose 简介 和 docker-compose.yml 参数介绍

    1. docker compose概念 文档  https://docs.docker.com/compose/compose-file/compose-versioning 一个基于 docker ...

  7. Docker Compose部署项目到容器-基于Tomcat和mysql的项目yml配置文件代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  8. Docker Compose部署Nexus3时的docker-compose,yml代码

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  9. Docker compose学习笔记

    一.compose compose 作用 你的应用可能需要很多个服务,比如web服务,数据库服务,缓存服务等等.我们可以把这些服务放到单独的容器里面,如果手工去配置这些服务会有些麻烦,docker c ...

  10. docker compose 笔记

    https://www.youtube.com/watch?v=Uez88TWOECg 是基于这个视频做的笔记. Docker Compose: Compose is a tool for defin ...

随机推荐

  1. java当中JDBC当中请给出一个DataSource的单态模式(SingleTon)HelloWorld例子

    [学习笔记] 2.DataSource的单态模式(SingleTon)程序 咱们还接着上面的例子来说.1万个人要看书.千万确保要只建立一个图书馆.要是一不留神,建了两个或三个图书馆,那可就亏大发了.对 ...

  2. 修改织梦DedeCMS投票漏洞

    织梦/dedecms系统我们都知道是有很多漏洞的,我在调试投票功能的时候正好要用到投票功能,这不就出现了漏洞,下面我就给大家展示如何修复这个织梦投票漏洞 首先我们打开//dedevote.class. ...

  3. 第三章 hash是个啥玩意

    3.10 hash 什么是哈希? hash,一般翻译做散列.杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.这种转换是一种压 ...

  4. 20191031:GIL全局解释锁

    20191031:GIL全局解释锁 总结关于GIL全局解释锁的个人理解 GIl全局解释锁,本身不是Python语言的特性,而是Python语言底层的c Python解释器的一个特性.在其他解释器中是没 ...

  5. PHP 中 include 和 require 的区别详解

    require() 语句的性能与 include() 相类似,都是包括并运行指定文件.除了处理失败的方式不同之外.require 在出错时产生 E_COMPILE_ERROR 级别的错误,终止脚本运行 ...

  6. TCP--粘包拆包,netty的解决方式

    TCP基于链接的协议,并且保证有序性. 但是,每个包的长度,需要明确,否则会发生粘包现象. 以下示例为一个自定义协议的例子,其中包含了拆包的内容. 所有的类: 协议类: public class Pe ...

  7. "一起来捉妖"怎么从瘸腿中组合到最合心意的妖灵

    背景: 最近两天活动,黑鬼白鬼合体觉醒秋容,陆无名,聂小倩,作为一个非土豪玩家,没有超高资质妖灵的我,想要在瘸腿妖灵中选取两个最佳选择,合体觉醒. 初选: 备选妖灵从5个维度录入数据,进行选择,分别为 ...

  8. windows下安装mysql-8.0.18-winx64

    1.下载安装包 安装包现在地址: https://dev.mysql.com/downloads/mysql/ 2.解压缩至安装目录 解压缩下载之后的zip,我这里使用的安装路径为: C:\Progr ...

  9. 多线程使用libcurl

    curl默认情况下有两个地方是线程不安全的, 需要特殊处理, 1是curl_global_init 这个函数必须单线程调用, 2是默认多线程调用https会莫名其妙的挂掉, 以下是网上的解决方案 ht ...

  10. sql语句中包含引号处理方法

    1. 背景 在使用Python脚本向数据库导入日志文件时候,突然报错. 2. 解决思路 查看messages文件,发现有一条语句里包含单引号. 查看sql语句,是使用单引号标注str类型. 3. 得出 ...