docker-compose 的使用及参数

一、docker-compose 介绍

  1. docker-compose是一个容器编排工具,单机版

  2. 有时候有一组服务他们有一些依赖关系,或者需要通信,需要同时部署(eg:web服务器与数据库),此时docker-compose可以简单的实现

  3. 且docker-compose会创建一个网络,从而在一个services中的容器,他们是在同一个子网的

  4. 指定一个yml文件作为docker-compose的配置文件来启动

 docker-compose -f docker-compose-dev.yml up

二、docker-compose 使用

  1. 模板文件 docker-compose.yml
version: "3"
# 服务 里面包含了多个容器
services:
# 单个service(容器的配置)
  webapp:
# 镜像名
    image: imageName
    # 共享内存的大小
    shm_size: 1gb
    #卷挂载
    volumes:
      - /var/www/project:/cached
    # 最大文件限制数,主要是程序崩溃后会生成可调试文件core.2131 会占用内存,不启用即可
    ulimits:
      core: 0
      nofile:
        soft: 1024
        hard: 1024
    # 环境变量文件
    env_file:
      - .env
    # 环境变量设置
    environment:
      RACK_ENV: development
      SHOW: 'true'
  1. 指定yml配置文件名
docker-compose -f docker-compose-dev.yml up

二、 docker-compose 参数详解:

  1. 所使用的镜像名
image: image_name
  1. 文件挂载文件、目录映射 —— 注意:linux下vim修改文件wq后是一个新文件,也就是使用文件挂载,vim修改文件无法更新docker容器内的文件,所以这种(平时测试代码)可以选择目录挂载
volumes:
  - /var/www/project:/cached # 目录挂载
  - /var/www/u2.txt:/home/u2.txt # 文件挂载

挂载点 :

  1. 如果:挂载了父目录 /app 。里面有个子目录 /app/caches,然后又对子目录/app/caches挂载映射了其他目录,那么原来父目录的/app/caches会被覆盖为新的挂载的目录
  2. 比如先挂载了一个目录/root/atom-node1(atom-node1下面有个caches子目录)作为/app目录
  3. 然后又挂载了/app/caches 目录。这时候/tmp就覆盖了原来的/root/atom-node1/caches目录了
# 比如先挂载了一个目录/root/atom-node1(atom-node1下面有个caches子目录)作为/app目录,
# 然后又挂载了/app/caches 目录。这时候/tmp就覆盖了原来的/root/atom-node1/caches目录了
docker run -v /root/atom-node1:/app -it  -v /tmp:/app/caches  oc-runner bash

  1. 端口映射,把docker内部的端口暴露出来
ports: 
  - 8088:8088
  1. 重启操作
restart: "no"
restart: always
restart: on-failure
restart: unless-stopped
  1. 容器名称
container_name: "test2"
  1. 环境变量文件
env_file:
  - .env
  • .env的内容可以如下, 格式是name=value的形式,#表示注释
# Set Rails/Rack environment
RACK_ENV=development
  1. 环境变量 —— 有时候需要自定义一些环境变量
environment:
  RACK_ENV: development
  SHOW: 'true'
  SESSION_SECRET:
  1. external_links,链接其他的容器服务 (CONTAINER:ALIAS).
external_links:
  - redis_1
  - project_db_1:mysql
  - project_db_1:postgresql
  1. ulimit 限制,限制生成可调试文件
 # 最大文件限制数,主要是程序崩溃后会生成可调试文件core.2131 会占用内存,不启用即可
  ulimits:
      core: 0
      nofile:
        soft: 1024
        hard: 1024
  1. shm_size 共享内存,这个会限制某些应用(eg. 谷歌浏览器)的使用内存,从而可能导致崩溃
shm_size: 1gb
  1. command 启动后的命令,这个会直接覆盖掉默认的 dockerfile定义的command
command: bundle exec thin -p 3000
  1. depends_on 由于启动顺序是随机的,所以如果有依赖关系的话,需要使用这个
version: "3.7"
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres
  1. entrypoint 容器启动的入口点:docker-compose这里定义的话。会覆盖原本docker的image的默认的entrypoint
# 覆盖Dockerfile文件里面的:ENTRYPOINT command param1 param2
entrypoint : /code/entrypoint.sh
  1. command 容器的启动命令:docker-compose 这里定义的话,会覆盖docker image里面的CMD 命令
# 覆盖Dockerfile里面的:CMD ./entrypoint.py start
command: bundle exec thin -p 3000
  • 执行多行命令的方式:使用 bash -c "command1 && command2"
command: bash -c  "ls && pwd && ./start.sh"

三、docker-compose 坑 之 不支持 shell command 扩展

  1. 本来想在docker-compose.yml中 使用shell动态来映射目录【实际并不支持】:
volumes: 
  - /var/lib/docker/containers/$(docker inspect --format="{{.Id}}" atom-node1_oc-runner_1):/var/log/atom-node1
  1. issue:https://github.com/docker/compose/issues/4081

  1. docker-compose 参数 官方文档
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352