• docker-compose的部署


    目录

    一、compose的概述

    1.1 yaml的概述

    1.2 yaml的数据结构

    1.2.1 docker composeyml文件的常用手段

    1.3 docker compose

    1.4 yml文件编写

     二、部署compose

    2.1 下载docker-compose安装包

     2.2 部署docker-compose

    2.3 部署docker-compose

    2.4 开启验证

     三、compose编排安装tomcat容器

    总结


    一、compose的概述

    compose是docker官网开发的,负责实现对docker容器集群的快速编排。

    docker-compose是基于docker的编排工具,使容器的操作能够批量的,可视的执行,是一个管理多个容器的工具,比如可以解决容器之间的依赖关系,当在宿主机启动较多的容器时候,
    如果都是手动操作会觉得比较麻烦而且容器出错,这个时候推荐使用 dockerd的单机编排工具 docker-compose。

    • compose是一个用于定义及允许多个Docker容器的工具,主要是通过一个YAML文件进行服务配置

    • 使用Docker Compose不再需要使用Shell脚本来启动容器

    • Docker Compose非常适合组合使用多个容器进行开发的场景

    Compose有2个重要的概念:

    • 项目(Project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
    • 服务(Service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。

    使用Compose 基本上分为三步:

    1. Dockerfile      定义应用的运行环境
    2. docker-compose.yml 定义组成应用的各服务
    3. docker-compose up 启动整个应用

    1.1 yaml的概述

    yaml语言是方便人读写,它的实质就是通用的数据串行化格式

    它的基本语法规则如下:

    • 大小写敏感
    • 使用缩进表示层级关系
    • 缩进时不允许使用Tab键,只允许使用空格
    • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

    1.2 yaml的数据结构

    • 对象,键值对的集合
    • 数组,一组按次序排列的值,又称序列
    • 纯量,单个的,不可再分的值

    1.2.1 docker compose.yml文件的常用手段

                    字段                                                         描述
    build  docker   filecontext    指定Dockerfile文件名构建镜像上下文路径
    image                          指定镜像
    command                   执行命令,覆盖默认命令
    container name         指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale
    deploy                        指定部署和运行服务相关配置,只能在Swarm模式使用
    environment               添加环境变量
    networks                    加入网络
    ports                           暴露容器端口,与-p相同,但端口不能低于60
    volumes                      挂载宿主机路径或命令卷
    restart                          重启策略,默认no,always,no-failure,unless-stoped
    hostname                    容器主机名
     

    1.3 docker compose

    docker-compose -h                           # 查看帮助
    docker-compose up                           # 创建并运行所有容器
    docker-compose up -d                        # 创建并后台运行所有容器
    docker-compose ps                           # 显示所用容器信息
    docker-compose -f docker-compose.yml up -d  # 指定模板
    docker-compose down                         # 停止并删除容器、网络、卷、镜像。
    docker-compose rm                           # 删除容器
    docker-compose logs                         # 查看容器输出日志
    docker-compose pull                         # 拉取依赖镜像
    dokcer-compose config                       # 检查配置
    dokcer-compose config -q                    # 验证yaml配置文件是否正确,有问题才有输出
    docker-compose pause                        # 暂停容器
    docker-compose unpause                      # 恢复暂停
    docker-compose restart                      # 重启服务
    docker-compose start                        # 启动服务
    docker-compose stop                         # 停止服务

    1.4 yml文件编写

    模板文件是使用 Docker Compose 的核心,涉及到的指令关键字也比较多。默认的模板文件名称为 docker-compose.yml ,格式为YAML 格式。一个 docker-compose.yml 文件可以分为三层:

    #第一层 版本号
    version: "3"  #代表使用docker-compose项目的版本号
    #第二层:services 服务配置
    services:
      web:
        build: .
        ports:  #宿主机和容器的端口映射
          - "5000:5000"
        volumes:
          - .:/code
      redis:
         image: "redis:alpine"
    # 第三层 其他配置 网络、卷、全局规划
    

     

     二、部署compose

    2.1 下载docker-compose安装包

    从github上下载docker-compose二进制文件安装

    curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
     

     2.2 部署docker-compose

    //可以在任何目录下使用compose命令
    cp -p docker-compose /usr/local/bin
    chmod +x docker-compose
    [root@localhost /]# docker-compose -v
    docker-compose version 1.21.1, build 5a3f1a3

    2.3 部署docker-compose

    //可以在任何目录下使用compose命令
    cp -p docker-compose /usr/local/bin
    chmod +x docker-compose
    [root@localhost /]# docker-compose -v
    docker-compose version 1.21.1, build 5a3f1a3 

     首先创建一个总的目录

    mkdir /root/compose_nginx
    cd /root/compose_nginx
     
    yum install -t tree
     

     添加docker-compose.yml

    [root@server1 compose_nginx]# vi docker-compose.yml 
    version: '3'
    services:
      nginx:
        hostname: nginx
        build:
          context: ./nginx
          dockerfile: Dockerfile
        ports:
          - 1216:80
          - 1217:443
        networks:
          - zz
        volumes:
          - ./wwwroot:/usr/local/nginx/html
    networks:

      zz:
     

     

     

     在nginx目录下添加配置文件

    [root@server1 compose_nginx]# cd nginx/
    [root@server1 nginx]# cat Dockerfile 

    FROM centos:7
    RUN yum -y update
    RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
    RUN useradd -M -s /sbin/nologin nginx
    ADD nginx-1.12.2.tar.gz /usr/local/src
    WORKDIR /usr/local/src/nginx-1.12.2
    RUN ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_stub_status_module
    RUN make -j 4 && make install
    RUN ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    #ENV PATH /usr/local/nginx/sbin/:PATH
    EXPOSE 80
    EXPOSE 443
    RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
    CMD ["/usr/local/nginx/sbin/nginx"]
     

     

    在网页上设置

    [root@localhost compose_nginx]# ls
    docker-compose.yml  nginx  wwwroot
     
    echo "hello world" > index.html

     

     

    2.4 开启验证

     使用compose去安装运行nginx容器

    docker-compose -f docker-compose.yml up -d

     

     

     

     

     三、compose编排安装tomcat容器

    cd /opt
    mkdir compose-tomcat
    cd compose-tomcat
    mkdir tomcat
    cd tomcat
    ==拖入安装包apache-tomcat-9.0.16.tar.gz 、jdk-8u91-linux-x64.tar.gz==
     
    vim Dockerfile
    FROM centos:7
     
    ADD apache-tomcat-9.0.16.tar.gz /usr/local
    ADD jdk-8u91-linux-x64.tar.gz /usr/local
     
    WORKDIR /usr/local
     
    RUN mv apache-tomcat-9.0.16 tomcat
    RUN mv jdk1.8.0_91 java
     
    ENV JAVA_HOME /usr/local/java
    ENV CLASSPATH $JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    ENV PATH $JAVA_HOME/bin:$PATH
     
    EXPOSE 8080
    CMD ["/usr/local/tomcat/bin/catalina.sh","run"]
     
    ====>:wq
     
    cd ..
    vim tomcat-compose.yml
     
    version: '3'
    services:
     tomcat:
      hostname: tomcat
      build :
       context: ./tomcat
       dockerfile: Dockerfile
      ports:
       - 7788:8080
      networks:
       - cluster
    networks:
     cluster:
     
    ====>:wq
     
    docker-compose -f tomcat-compose.yml up -d
     
    ==真机访问http://IP:7788==

     

     

    总结

     

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

    其它大部分指令都跟 docker run 中的类似。

    如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中再次设置。 

    使用Compose 基本上分为三步:

    Dockerfile 定义应用的运行环境
    docker-compose.yml 定义组成应用的各服务
    docker-compose up 启动整个应用

  • 相关阅读:
    【Rust日报】2022-07-25 如何修复和预防 buffered streams 死锁
    Appium 全新 2.0 全新跨平台生态,版本特性抢鲜体验!
    日常学习之:如何基于 OpenAI 构建自己的向量数据库
    基于51单片机的冰箱控制系统设计( proteus仿真+程序+设计报告+原理图+讲解视频)
    springboot+java海洋馆门票预订网上商城线上销售系统
    oracle11g-图形安装(centos7)
    【附源码】Python计算机毕业设计企业人事系统
    【总线】AXI4第三课时:握手机制
    JAVA毕业设计146—基于Java+Springboot+vue+uniapp的景区旅游购票小程序(源代码+数据库+9000字论文)
    Vue中Class绑定和style绑定的方式
  • 原文地址:https://blog.csdn.net/zzn0109/article/details/126048362