Mycat 镜像-创建 Docker 镜像
将 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 镜像的更多相关文章
- Spring Boot 创建 Docker 镜像
随着越来越多的组织转向容器和虚拟服务器,Docker正成为软件开发工作流程中一个更重要的部分.为此,Spring Boot 2.3中最新的功能之中,提供了为Spring Boot应用程序创建 Dock ...
- Docker笔记--镜像&基于GO项目创建Docker镜像
Docker笔记--镜像&基于GO项目创建Docker镜像 核心概念 Doker镜像--包含一个基本的操作系统运行环境和应用程序,镜像是创建Docker容器的基础. Docker容器--如果把 ...
- 创建docker镜像,初始化jdk8与tomcat环境
一.创建Dockerfile文件: 创建Dockerfile文件,下载jdk与tomcat放在Dockerfile同目录下. Dockerfile文件内容: FROM Ubuntu:14.10 MAI ...
- 基于Dockerfile创建docker镜像
0.先创建一个文件夹img mkdir img 1.Linux上新建3个文件 2.文件内容分别写入 (1)Dockerfile中 # 基于的基础镜像centos FROM centos # 维护该镜像 ...
- .Net Core(完) 创建Docker镜像
使用Docker可以在操作系统上分出多个独立的区域(容器/Container),各个容器之间基本隔离,且可以有自己单独的系统配置.软件等,各个容器之间的软件基本不会互相干扰.Docker上配置好的容器 ...
- Docker+.Net Core 的那些事儿-2.创建Docker镜像
1.从store.docker.com获取.net core镜像 docker pull microsoft/dotnet 2.创建一个.net core项目,并发布 在上篇文章结尾建立的工作目录下, ...
- 03-docker入门-创建 docker 镜像
方法1:从运行的容器创建方法2:编写 DockFile 文件创建 方法1: 打包镜像 docker commit -m "Test a change" 610 ubuntu:tes ...
- Golang Web应用 创建docker镜像笔记(win 平台)
记录的是 本地编译好了再创建容器镜像的方法 ,这样子生成的镜像文件比较小,方便分发部署 win 平台需要设置golang交叉编译 生成linux可执行文件 CMD下: Set GOOS="l ...
- 将iso镜像转换为docker镜像
为什么不用官方的镜像? 不是不想使用,而是官方镜像提供的功能实在是太少了,不信的话,你pull一个ubuntu:latest的进行,你看有没有wget.curl.ssh这些功能,就连最简单的ifcon ...
随机推荐
- ranch 源码分析(二)
接上ranch 源码分析(一) 上次讲到了ranch.erl的start_listener函数,下面我们详细分析下这个函数 -module(ranch). %...... 省略若干行 -spec st ...
- eslint详细配置
vue-cli3按照官网教程配置搭建后,发现每次编译,eslint都抛出错误, 修改配置在 .eslintrc.js中修改 或者 关闭eslint 1.关闭eslint 直接注释掉package ...
- 皮质学习 HTM 知多少
目录 Hierarchical Temporal Memeory 0.1 引言 历史 HTM 概览 HTM的层级结构 神经元 HTM 端对端应用框架[^8] 数据编码[^1] 数据编码 数据输入 树突 ...
- apply、call、bind的区别
apply.call.bind这三种方法一般用来改变this指向. apply()方法接收两个参数,一个是函数运行的作用域this,另一个是参数数组 call()方法接收两个参数,一个是函数运行的作用 ...
- AutoMapper实现对象转换的几种方式
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //1.普通转换 Name name ...
- css3 二级菜单
<!doctype html><!--<!DOCTYPE> 声明位于文档中的最前面的位置,处于 <html> 标签之前.此标签可告知浏览器文档使用哪种 HTM ...
- Android:进程优先级
进程优先级 优先级 服务 说明 高优先级 前台进程 ①该进程包含正在与用户进行交互的界面组件,比如一个Activity. ②进程服务被Activity调用,而且这个Activity正在与用户进行交互 ...
- Ansible 任务计时
在 github 发现一个 Ansible 任务计时插件“ansible-profile”,安装这个插件后会显示 ansible-playbook 执行每一个任务所花费的时间.Github 地址: h ...
- MVVM设计模式加RAC响应式编程
一:为什么要用MVVM? 为什么要用MVVM?只是因为它不会让我时常懵逼. 每次做完项目过后,都会被自己庞大的ViewController代码吓坏,不管是什么网络请求.networking data ...
- jQuery ajax瀑布流加载静态的列表页面
1.加载一行数据 <script> //滚动加载事件 var Loadurl = "{$url}"; if(window.location.href !== Loadu ...