将 Mycat-server 创建到镜像,使其能够进行容器化部署,我们需要创建 Dockerfile 并在文件中安装其依赖项,使用 centos 做为 base 镜像,并安装 jdk 依赖即可,因此创建 mycat 的步骤是比较简单的,下面按照创建镜像步骤来进行说明:

  • 创建镜像构建目录

    创建目录 mycat-server-build,并将 mycat-server 和 其依赖的 jdk 文件复制到该目录内,我命名 mycat-server 目录名为 mycat1.65,jdk 的目录名称为 jdk1.8.0_162,目录结构如下:

    mycat-server-build/

    ├──mycat1.65

    ├──jdk1.8.0_162

  • 创建 Dockerfile 文件

    在目录 mycat-server-build 创建 Dockerfile 文件,文件内容如下:

    # 设置镜像的 base 镜像,这里我们使用 centos 系统镜像

    FROM centos

    # 复制依赖的 jdk 文件,我这里是已经解压缩,如果是 tar 格式文件,使用 ADD

    COPY jdk1.8.0_162 /opt/jdk1.8.0_162

    # 复制 mycat 文件,我这里是已经解压缩,如果是 tar 或 gz 格式文件,使用 ADD

    COPY mycat1.65 /opt/mycat1.65

    # 设置环境变量

    ENV JAVA_HOME /opt/jdk1.8.0_162

    ENV MYCAT_HOME /opt/mycat1.65

    ENV PATH /usr/bin:$JAVA_HOME/bin:$MYCAT_HOME/bin:PATH

    # 执行最终命令,启动 mycat

    CMD mycat console

    创建 Dockerfile 文件后, mycat-server-build 目录的结构如下:

    mycat-server-build/

    ├──Dockerfile

    ├──mycat1.65

    ├──jdk1.8.0_162

     
     

  • 执行镜像构建

    进入 mycat-server-build 目录,输入镜像构建命令如下:

    [root@docker mycat-server-build]# docker build -t mycat-server .

    Sending build context to Docker daemon 407MB

    Step 1/7 : FROM centos

    ---> e934aafc2206

    Step 2/7 : COPY jdk1.8.0_162 /opt/jdk1.8.0_162

    ---> Using cache

    ---> 79987e6045df

    Step 3/7 : COPY mycat1.65 /opt/mycat1.65

    ---> Using cache

    ---> c1fb57b124ac

    Step 4/7 : ENV JAVA_HOME /opt/jdk1.8.0_162

    ---> Using cache

    ---> 9ca207749689

    Step 5/7 : ENV MYCAT_HOME /opt/mycat1.65

    ---> Using cache

    ---> 1a3c9d9863b6

    Step 6/7 : ENV PATH /usr/bin:$JAVA_HOME/bin:$MYCAT_HOME/bin:PATH

    ---> Running in ff21c0168f81

    Removing intermediate container ff21c0168f81

    ---> afcd45c2bb5e

    Step 7/7 : CMD mycat console

    ---> Running in b17bf693bbbf

    Removing intermediate container b17bf693bbbf

    ---> 1254457c68d1

    Successfully built 1254457c68d1

    Successfully tagged mycat-server:latest

    如果显示 Successfully 表示镜像已经构建成功

  • 运行测试

    直接执行镜像 run 命令,并增加端口映射,启动镜像:

    [root@docker mycat-server-build]# docker run -it --name mycat-server -p 8066:8066 -p 9066:9066 mycat-server

    Running Mycat-server...

    wrapper | --> Wrapper Started as Console

    wrapper | Launching a JVM...

    jvm 1 | Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=64M; support was removed in 8.0

    jvm 1 | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org

    jvm 1 | Copyright 1999-2006 Tanuki Software, Inc. All Rights Reserved.

    jvm 1 |

    jvm 1 | MyCAT Server startup successfully. see logs in logs/mycat.log

     
     

    由于我们是以 -it 参数(交互模式)启动镜像,因此直接将进入镜像能够看到具体的输出,如果是实际使用时,需要使用 -d 参数(后台的方式启动容器)来启动镜像:

    [root@docker mycat-server-build]# docker run -d --name mycat-server -p 8066:8066 -p 9066:9066 mycat-server

    e95153b538038cecb044bcb3d3f688a8cf3ac2e5f3585d33be8fe457aaeab7fb

     
     

    容器中的 mycat 会使用 /opt/mycat1.65/conf 目录下的配置文件进行启动,日志会记录到 /opt/mycat1.65/logs 中,如果我们希望将镜像中的日志或者配置文件读取或写入到本机中,可以增加 -v 参数(映射存储路径)来启动镜像:

    • 创建存储容器日志的目录,执行命令如下:

      mkdir docker-logs/mycat

    • 停止并移除 mycat-server 容器,执行命令如下:

      docker stop mycat-server

      mycat-server

      [root@docker /]# docker rm mycat-server

      mycat-server

    • 启动容器

      docker run -d --name mycat-server -p 8066:8066 -p 9066:9066 -v /docker-logs/mycat:/opt/mycat1.65/logs mycat-server

      41ce2ee1d756023481f7216684fa5a5ba9eb8df6845f63e4c8b5fe4e2e81e218

      查看本地目录 /docker-logs/mycat,可以看到 mycat 的日志存储文件:

      [root@docker mycat]# ls /docker-logs/mycat

      mycat.log mycat.pid wrapper.log

     
     

     
     

Mycat 镜像-创建 Docker 镜像的更多相关文章

  1. Spring Boot 创建 Docker 镜像

    随着越来越多的组织转向容器和虚拟服务器,Docker正成为软件开发工作流程中一个更重要的部分.为此,Spring Boot 2.3中最新的功能之中,提供了为Spring Boot应用程序创建 Dock ...

  2. Docker笔记--镜像&基于GO项目创建Docker镜像

    Docker笔记--镜像&基于GO项目创建Docker镜像 核心概念 Doker镜像--包含一个基本的操作系统运行环境和应用程序,镜像是创建Docker容器的基础. Docker容器--如果把 ...

  3. 创建docker镜像,初始化jdk8与tomcat环境

    一.创建Dockerfile文件: 创建Dockerfile文件,下载jdk与tomcat放在Dockerfile同目录下. Dockerfile文件内容: FROM Ubuntu:14.10 MAI ...

  4. 基于Dockerfile创建docker镜像

    0.先创建一个文件夹img mkdir img 1.Linux上新建3个文件 2.文件内容分别写入 (1)Dockerfile中 # 基于的基础镜像centos FROM centos # 维护该镜像 ...

  5. .Net Core(完) 创建Docker镜像

    使用Docker可以在操作系统上分出多个独立的区域(容器/Container),各个容器之间基本隔离,且可以有自己单独的系统配置.软件等,各个容器之间的软件基本不会互相干扰.Docker上配置好的容器 ...

  6. Docker+.Net Core 的那些事儿-2.创建Docker镜像

    1.从store.docker.com获取.net core镜像 docker pull microsoft/dotnet 2.创建一个.net core项目,并发布 在上篇文章结尾建立的工作目录下, ...

  7. 03-docker入门-创建 docker 镜像

    方法1:从运行的容器创建方法2:编写 DockFile 文件创建 方法1: 打包镜像 docker commit -m "Test a change" 610 ubuntu:tes ...

  8. Golang Web应用 创建docker镜像笔记(win 平台)

    记录的是 本地编译好了再创建容器镜像的方法 ,这样子生成的镜像文件比较小,方便分发部署 win 平台需要设置golang交叉编译 生成linux可执行文件 CMD下: Set GOOS="l ...

  9. 将iso镜像转换为docker镜像

    为什么不用官方的镜像? 不是不想使用,而是官方镜像提供的功能实在是太少了,不信的话,你pull一个ubuntu:latest的进行,你看有没有wget.curl.ssh这些功能,就连最简单的ifcon ...

随机推荐

  1. postman(六):详解在Pre-request Script中如何执行请求

    上一篇借着如何在不同接口之间传递数据,简单说了下在postman编写脚本发送请求,这里再详细介绍一下如何在Pre-request Script和Tests标签中编写脚本.因为我目前研究的也不是很深,对 ...

  2. jmeter之接口测试(http接口测试)

    基础知识储备 一.了解jmeter接口测试请求接口的原理 客户端--发送一个请求动作--服务器响应--返回客户端 客户端--发送一个请求动作--jmeter代理服务器---服务器--jmeter代理服 ...

  3. python项目练习

    程序框图 (消费模块暂未写入) bin:程序执行 import os import sys base_dir = os.path.dirname(os.path.dirname(os.path.abs ...

  4. leetcode python 008

    ##  字符串转化为整数##  懒得自己做int0=63435435print(int(int0))

  5. 第一章03 java 开发环境搭建

    1. 首先,搭配java开发环境,安装(jdk:java 开发工具包) 2.安装下载:输入www.oracle.com.cn/indek.html  (cn代表中文) 3.测试安装是否成功 (1)wi ...

  6. node.js学习一---------------------模块的导入

    /** * 前端使用第三方包流程: * 导包:得到一个对象,所有对三方的API都是该对象的方法 * 使用包 * */ /** * 在node.js中叫做导模块 * 导模块:得到一个对象,所有第三方的A ...

  7. vue 关闭浏览器

    在开发中的一个需求,vue中关闭浏览器, 直接使用window.close()在chrome.fireFox会不起作用 需要改为一下方式 window.open('about:blank','_sel ...

  8. find: paths must precede expression问题及解决

    用find命令查找时 例如命令 会出错,查文档找出 find: paths must precede expression Usage: find [-H] [-L] [-P] [-Olevel] [ ...

  9. 多线程callable使用方法

    Runnable是执行工作的独立任务,但是它不返回任何值.在JavaSE5中引入的Callable是一种具有类型参数的泛型,它的类型参数表的是从方法call()中返回的值,并且必须使用Executor ...

  10. 3.4 unittest之装饰器(@classmethod)

    3.4 unittest之装饰器(@classmethod) 前言前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例 ...