美文网首页
3.1docker-compose

3.1docker-compose

作者: 刘岩2019 | 来源:发表于2019-04-14 16:03 被阅读0次

    一: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 服务名
    

    相关文章

      网友评论

          本文标题:3.1docker-compose

          本文链接:https://www.haomeiwen.com/subject/pxqswqtx.html