美文网首页
docker:基于centos7系统下的docker-compo

docker:基于centos7系统下的docker-compo

作者: 不加糖L | 来源:发表于2019-12-23 16:38 被阅读0次

    一、安装docker

    yum list docker //查询可下载的软件,查询结果如下
    docker.x86_64                       2:1.13.1-53.git774336d.el7.centos                        @extras
    
    yum -y install docker.x86_64 //安装docker
    
    service docker start/stop/restart //启动/停止/重启docker服务
    
    

    二、安装docker-compose 插件用于编排镜像

    curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose            //下载并安装docker-compose
    
    chmod +x /usr/local/bin/docker-compose  //设置权限
    
    docker-compose -version                //查看版本,此版本为1.14 版本过低部分功能无法使用
    
    
    

    三、获取国内镜像加速器


    这里写图片描述

    注册阿里云帐号即可获得 如图配置可解决无法pull镜像的问题

    四、部署基础镜像
    1、从网上镜像仓库下载镜像(可联网环境)
    docker search 命令查询镜像源中的镜像,下图以swarm为例


    这里写图片描述

    docker pull 命令根据NAME下载对应的镜像 ,docker images 查看服务器中已有镜像


    这里写图片描述

    2、本地tar文件导入镜像(离线环境)
    将压缩文件导入服务器


    这里写图片描述

    docker load -i 命令可将压缩成tar文件的镜像导入服务器

    docker load -i docker_mapbox.tar 
    
    这里写图片描述

    五、重构建镜像
    因为一般的基础镜像不足以满足实际部署需求,需要对镜像进行个性化的定制如:数据库需要建表,序列,导入数据;tomcat需要放入war包。
    1、Dockerfile的构建

    例1:数据库镜像重构

    FROM mdillon/postgis:latest                                  //基础镜像,本地有会用本地;本地没有会从网上pull
    MAINTAINER "LJL" <1491623908@qq.com>                         //维护人信息
    ENV TZ=Asia/Shanghai                                         //地地区
    COPY ./all_object.sql /docker-entrypoint-initdb.d/           //将"本路径"下的all_object.sql 文件拷贝到PG数据库的docker-entrypoint-initdb.d/文件路径下(该目录下的文件在镜像启动容器时会自动运行)
    
    
    all_object.sql内有建表和导入数据等语句
    CREATE TABLE "public"."sys_menu" (
    "id" varchar(64) COLLATE "default" NOT NULL,
    "parent_id" varchar(64) COLLATE "default" NOT NULL,
    "parent_ids" varchar(2000) COLLATE "default" NOT NULL,
    "name" varchar(100) COLLATE "default" NOT NULL,
    "sort" numeric(10) NOT NULL,
    "href" varchar(2000) COLLATE "default",
    "target" varchar(20) COLLATE "default",
    "icon" varchar(100) COLLATE "default",
    "is_show" char(1) COLLATE "default" NOT NULL,
    "permission" varchar(200) COLLATE "default",
    "create_by" varchar(64) COLLATE "default" NOT NULL,
    "create_date" timestamp(0) NOT NULL,
    "update_by" varchar(64) COLLATE "default" NOT NULL,
    "update_date" timestamp(0) NOT NULL,
    "remarks" varchar(255) COLLATE "default",
    "del_flag" char(1) COLLATE "default" NOT NULL
    )
    WITH (OIDS=FALSE)
    
    ;
    COMMENT ON TABLE "public"."sys_menu" IS '菜单表';
    COMMENT ON COLUMN "public"."sys_menu"."id" IS '编号';
    COMMENT ON COLUMN "public"."sys_menu"."parent_id" IS '父级编号';
    COMMENT ON COLUMN "public"."sys_menu"."parent_ids" IS '所有父级编号';
    COMMENT ON COLUMN "public"."sys_menu"."name" IS '名称';
    COMMENT ON COLUMN "public"."sys_menu"."sort" IS '排序';
    COMMENT ON COLUMN "public"."sys_menu"."href" IS '链接';
    COMMENT ON COLUMN "public"."sys_menu"."target" IS '目标';
    COMMENT ON COLUMN "public"."sys_menu"."icon" IS '图标';
    COMMENT ON COLUMN "public"."sys_menu"."is_show" IS '是否在菜单中显示';
    COMMENT ON COLUMN "public"."sys_menu"."permission" IS '权限标识';
    COMMENT ON COLUMN "public"."sys_menu"."create_by" IS '创建者';
    COMMENT ON COLUMN "public"."sys_menu"."create_date" IS '创建时间';
    COMMENT ON COLUMN "public"."sys_menu"."update_by" IS '更新者';
    COMMENT ON COLUMN "public"."sys_menu"."update_date" IS '更新时间';
    COMMENT ON COLUMN "public"."sys_menu"."remarks" IS '备注信息';
    COMMENT ON COLUMN "public"."sys_menu"."del_flag" IS '删除标记';
    
    

    例2:tomcat镜像重构

    FROM tomcat                                                    
    MAINTAINER "LJL" <1491623908@qq.com>
    ENV TZ=Asia/Shanghai
    COPY ./geoserver.war /usr/local/tomcat/webapps/                     //将"本路径"中的war包拷贝到tomcat的webapp路径下,会在启动tomcat时自动解压运行war包
    
    
    //除了以上的配置参数外还有很多,有兴趣自查
    

    2、运行Dockerfile构建镜像(此教程将此过程配置在docker-compose.yml 文件中)

    docker build -t ljl/ssh ./   //-t镜像名字  .当前目录
    

    六、docker-compose 统一编排管理容器
    1、docker-compose.yml文件的配置(上文中的"本路径"均是指与此文件相同的路径)
    目录结构如图


    这里写图片描述
    version: '2'                                                                     //版本号
    services:                                                                        //服务,下一级均为服务名
        tomcatGeo:                                                                   //服务名
            container_name: Geo                                                      //生成容器名
            image: "tomcat:Geo"                                                      //生成该容器的镜像名(重构后的镜像)          
            build:                                                                   //构建镜像
                context: .                                                           //dockerfile来源路径(.代表本路径)
                dockerfile: Dockerfile.tomcatGeo                                     //指定dockerfile
            ports:                                                                   //配置端口
                - "9087:8080"                                                        //映射端口:软件端口(外网通过 ip地址:9087 来访问此tomcat)
            networks:                                                                //网络名(仅为一个标记,用来保证所有容器运行与同一网络下,保证容器间的互相通信的可行性)
                - mynet
    
        tomcatMap:
            container_name: Map
            image: "tomcat:Map"
            build:
                context: .
                dockerfile: Dockerfile.tomcatMap
            ports:
                - "8888:8080"
            networks:
                - mynet        
        
        tomcatWeb:
            container_name: Web
            image: "tomcat:Web"
            build:
                context: .
                dockerfile: Dockerfile.tomcatWeb
            ports:
                - "8087:8080"
            networks:
                - mynet       
                                                                                     //以上三个tomcat是同一个基础镜像的三个不同的重构
    
        postgresql:              
            container_name: postgresql
            image: "postgresql:131"
            build:
                context: .
                dockerfile: Dockerfile.PGsql
            environment:                                                            //环境参数:帐号密码
                - POSTGRES_PASSWORD=postgres                                        
                - POSTGRES_USER=postgres
            ports:
                - "5432:5432"
            networks:
                - mynet
    
        mongo:
            container_name: mongo
            image: docker_mongo:latest
            ports:
                - "27017:27017"
            networks:
                - mynet
    
        mapbox:
            container_name: mapbox
            image: container-backup:latest
            ports:
                - "9095:80"
            networks:
                - mynet
    
    networks:
        mynet:
    
    
    
    
    //参数还有很多,有兴趣自查
    

    2、docker-compose up -d 命令 完成镜像重构和容器启动


    这里写图片描述

    重构的镜像如图


    这里写图片描述

    启动的容器如图


    这里写图片描述

    如果端口链接打不开 尝试此代码

    firewall-cmd --zone=public --add-port=5432/tcp --permanent
    firewall-cmd --reload
    

    相关文章

      网友评论

          本文标题:docker:基于centos7系统下的docker-compo

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