zoukankan      html  css  js  c++  java
  • Docker-Compose编排与部署

    Docker Compose (多个容器编排)

    是一个定义及运行多个docker容器的工具,可以使用YAML文件来配置应用,使用命令,可以创建并启动配置中的所有服务。docker compose会通过解析容器之间的依赖关系,按先后顺序启动容器。
    适应所有环境过程

    • 使用Dockerfile定义应用程序的环境,可以在任何地方复制
    • docker-compose.yml中定义组成应用程序服务,可以在任何环境中运行
    • 运行docker-compose开始运行应用程序

    官方文档:https://docs.docker.com/compose/overview

    Docker compose优点
    能将多个繁琐的docker命令步奏,简化成一个命令

    compose原理

    首先docker-compose up -d指令启动,一个docker-compose.yml定义了一个docker -compose的project(一个项目),compose会传到project参数由project模块处理
    其次若果宿主机有与应用对应的容器,docker-compose将进行逻辑判断,可以指定直接启动已有容器,docker-compose会执行server模块的容器重启,否则直接启动已有容器。
    最后就是在container模块执行启动时,模块会调用docker-py客户端执行post请求

    compose案例

    #首先安装docker-compose
    /usr/bin/docker-compose  #一般默认在这里面
    #如果没有下载到这里面
    [root@localhost ~]# chmod +x /usr/bin/docker-compose   #给他可执行权限
    [root@localhost ~]# docker-compose version    #查看版本号就可以使用了
    docker-compose version 1.21.1, build 5a3f1a3
    docker-py version: 3.3.0
    CPython version: 3.6.5
    OpenSSL version: OpenSSL 1.0.1t  3 May 2016
    

    docker-compose用法
    格式:docker-compose [-f...] [options] [COMMAND(命令)] [ARGS(命令参数)...]
    docker-compose常用选项-f

    • --verbose:输出更多调试信息
    • --version:打印版本信息
    • -f,--file FILE 使用特定的compose模板文件,默认为docker-compose.yml
    • -p,--project-name NAME 指定项目名称,默认使用目录名称

    docker-compose常用命令:

    • –build 在启动容器前构建服务镜像
    • kill 杀掉容器
    • logs 显示容器输出内容
    • port 打印绑定的开放端口
    • ps 显示容器
    • pull 拉去服务镜像
    • restart 重启服务
    • rm 删除停止的容器
    • run 运行一个一次性命令
    • scale 设置服务的容器数目
    • exec 切换到容器内
    • start 开启服务
    • stop 停止服务
    • up 创建并启动服务

    docker-compose中的yml文件
    YAML全称YAML Ain't Markup Language表示“YAML不是一种标记语言”的缩写,为了强调YAML语言以数据作为中心,不是以标记语言为重点,使用返璞词重新命名。
    YAML是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。

    YAML文件注意事项

    • 通常开头缩进两个空格(不能使用tab键)
    • 字符的后面缩进一个空格,冒号,逗号,横杆等。
    • 支持#注释
    • 允许加入空格
    docker-comopse.yml文件lnmp
    version: '3'
    services:
      nginx:
        hostname: nginx
        build:
          context: ./nginx
          dockerfile: Dockerfile
        ports:
          - 80:80
        networks:
          - lnmp
        volumes:
          - ./wwwroot:/usr/local/nginx/html
    
      php:
        hostname: php
        build:
          context: ./php
          dockerfile: Dockerfile
        ports:
          - 9000:9000
        networks:
          - lnmp
        volumes:
          - ./wwwroot:/usr/local/nginx/html
    
      mysql:
        hostname: mysql
        image: mysql:5.6
        ports:
          - 3306:3306
        networks:
          - lnmp
        volumes:
          - ./mysql/conf:/etc/mysql/conf.d
          - ./mysql/data:/var/lib/mysql
        command: --character-set-server=utf8
        environment:
          MYSQL_ROOT_PASSWORD: 123456
          MYSQL_DATABASE: wordpress
          MYSQL_USER: user
          MYSQL_PASSWORD: user123
    
    networks:
      lnmp:
    
    

    docker-compose中YAML常用字段

    • images用来指定服务的镜像名称或镜像ID,如果镜像在本地不存在,compose将会尝试去拉取这个镜像。
    • volumes指令用于设置数据卷挂载路径,数据卷挂载路径可以是一个目录或一个已经存在的数据卷容器,可以设置宿主机路径HOST:CONTAINER或加上访问模式HOST:CONTAINER:ro。使用ro表示对于容器来说数据卷是只读的,这样可以有效地保护宿主机的文件系统。
    • networks指令用于设置指定网络
    • command覆盖容器启动后默认执行的命令
    • ports暴露端口,与-p相同,但端口不能低于60
    #使用docker编译lnmp
    上传或者编译lnmp目录包,里面有各种配置,以及最主要的compose.yml,宿主机
    [root@localhost ~]# cd compose_lnmp/
    [root@localhost compose_lnmp]# ls
    docker-compose.yml  mysql  nginx  php  wwwroot
    [root@localhost compose_lnmp]# ls mysql/
    conf  data
    [root@localhost compose_lnmp]# ls nginx/
    Dockerfile  nginx-1.12.1.tar.gz  nginx.conf  run.sh
    [root@localhost compose_lnmp]# ls php/
    Dockerfile  php-5.6.39.tar.gz  php.ini
    [root@localhost compose_lnmp]# ls wwwroot/
    index.html  index.php
    
    
    #所有准备好后
    docker-compose up -d  #在目录里,要识别到.yml文件
    构建完成后
    docker-compose ps  #查看状态
    docker-compose restart  #三个容器重启(也就是说一下管理三个容器)
    此时就可以查看端口,访问页面了
    
    
    
  • 相关阅读:
    react-router-dom中的BrowserRouter和HashRouter,link与Navlink
    在React中使用react-router-dom路由
    详解react中的state,props,refs
    简单明了的vuex详解
    暂时性死区
    es6中的块级作用域
    es6的let
    前端模块化
    Web框架
    百分比布局 双飞翼布局 圣杯布局
  • 原文地址:https://www.cnblogs.com/wml3030/p/15465052.html
Copyright © 2011-2022 走看看