3.1docker-compose

一:docker-compose
管理docker的工具
二:docker-compose的安装

# 安装依赖工具
sudo apt-get install python-pip -y
# 安装编排工具
sudo pip install docker-compose
# 查看编排工具版本
sudo docker-compose version
# 查看命令帮助
docker-compose --help

三:yaml文件格式 yml

YAML有以下基本规则:
1、大小写敏感
2、使用缩进表示层级关系
3、禁止使用tab缩进,只能使用空格键
4、缩进长度没有限制(只能使用空格缩进),只要元素对齐就表示这些元素属于一个层级。
5、使用#表示注释
6、字符串可以不用引号标注

四:yaml中的三种数据结构:
map - 散列表:

# 使用冒号(:)表示键值对,同一缩进的所有键值对属于一个map,示例:
age : 12
name : huang

# 使用json表示
{"age":12, "name":"huang"}

list - 数组:

# 使用连字符(-)表示:
# YAML表示
- a
- b
- 12
    - 23
    - 34
# 使用json表示
["a", "b", 12,[23,34]]

scalar - 纯量:

字符串
    "hello"
     world
布尔值
    - true
    - false
整数
    12
浮点数
    12.43
NULL 
    在yml中使用 ~ 表示

例子:

# 1
Websites:
 YAML: yaml.org 
 Ruby: ruby-lang.org 
 Python: python.org 
 Perl: use.perl.org 
# 使用json表示
{"Websites":{"YAML":"yaml.org", "Ruby":"ruby-lang.org","Python":"python.org","Perl":"use.perl.org"}}

# 2
languages:
 - Ruby
 - Perl
 - Python 
 - c
# 使用json表示
{"languages":["Ruby", "Perl", "Python", "c"]}
 
# 3
-
  - Ruby
  - Perl
  - Python 
- 
  - c
  - c++
  - java
# 使用json表示
[["Ruby", "Perl", "Python"], ["c", "c++", "Java"]]

# 4
-
  id: 1
  name: huang
-
  id: 2
  name: liao
# 使用json表示
[{"id":1, "name":"huang"}, {"id":2, "name":"liao"}]

五:docker-compose配置文件
1.一份标准配置文件应该包含三大部分:

  • version
  • services
  • networks
# common.yml
version: '2'
services:
  webapp:   # 服务名
    environment:    # 环境变量.environment 和 Dockerfile 中的 ENV 指令一样会把变量一直保存在镜像、容器中。
      RACK_ENV: development  # 规范:变量名大写,获取变量的
      SHOW: 'true'
      SESSION_SECRET: docker-compose
# test.yaml
version: '2'    # docker-compose的版本

services:       # 服务
  web:          # 服务名, 自己起的, 每个服务器名对应一个启动的容器
    image: nginx:latest # 容器是基于那个镜像启动的,如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。
    container_name: myweb # 容器名字
    extends:    # 在一个yaml文件中引用另外一个yaml中的设置
      file: common.yml
      service: webapp
    command: /urs/local/nginx -g daemon off # docker容器启动之后, 执行的命令,启动nginx服务
    networks:   # 容器启动之后,要加入的网络
      - network1
    ports:      # 端口映射
      - "6789:8080"   # 6789: 宿主机端口, 8080: 容器端口
      - "3000"  # 宿主机的端口是随机分配的, 3000是容器开发的对外端口  // -P
      - "127.0.0.1:8001:8001"
      # - 12:12    yaml解析的时候如果60以下, 解析会有问题
    extra_hosts:   #添加主机映射, 域名和IP地址对应关系,最终被添加到hosts文件中  /etc/hosts
      - "host1:162.242.195.82"    # 主机名(域名):IP地址
      - "host2:50.31.209.229"
      # 域名解析: 
       #    - 先查本地hosts文件
       #    - 本地的dns缓存
       #    - 通过dns服务器查询
    volumes:    #数据卷挂载,重点
      - /opt/data:/var/lib/mysql  # 按照绝对路径映射
      - ./cache:/tmp/cache  # 相对路径的映射,docker run命令只允许使用绝对路径映射,不允许使用相对路径映射
                                        # ./目录是docker-compose配置文件所在的目录,如果是相对路径, ./是必须要写的, 或者../,当前路径的上一级
      - /home/go/configs:/etc/configs/:ro   # 指定容器中对文件的操作权限, 默认rw
      - ../temp/a.txt:/temp/b.sh  # 文件映射
    volumes_from:   #数据卷容器挂载,非重点
      # 服务名字
      - service_name  # 服务名
      - service_name:ro 
      #或者容器名
      - container:container_name  # 挂载容器
      - container:container_name:rw
 
  sql:         # 服务名, 自己起的, 每个服务器名对应一个启动的容器
    image: mysql
    volumes:
      - /home/test:/root/workdir 
    ports:
      - 9999:3306
    networks:
      - network1
      - network2
    depend_on:       # 解决了容器的依赖、启动先后的问题。
      - web
      - redis
      
  redis:      # 服务名, 自己起的, 每个服务器名对应一个启动的容器
    image: redis
    volumes:
      - /home/go/redis.conf:/redis/redis.conf
    ports:
      - 8989:6379
    networks:
      - network1
 
networks:    #声明网络
  network1: # 网络名
    driver: bridge # 网络驱动, 可以省略
  network2  # 网络名
    driver: bridge

六:docker-compose配置文件

1.compose服务启动、关闭、查看

前提条件: docker-compose.yaml (默认名)
# 启动docker容器
docker-compose up
    参数: -d : 以守护进程的方式运行
# 如果配置文件叫 a.yml
docker-compose -f a.yml up

# 关闭, 删除容器, 删除网络, 删除挂载的数据卷
docker-compose down
# 如果配置文件叫 a.yml
docker-compose -f a.yml down

# 查看 通过docker-compose启动的容器
docker-compose ps
# 如果配置文件叫 a.yml
docker-compose -f a.yml ps

2.容器开启、关闭、删除

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

推荐阅读更多精彩内容