文档章节

使用Dockerfile制作tomcat镜像

小小怪医芙兰
 小小怪医芙兰
发布于 2016/07/12 10:52
字数 598
阅读 154
收藏 2

网上很多教程都是在线安装,但是有时在线安装虚拟机网络很不稳定,导致中途失败。所以参考一些网上教程使用本地安装。

工具:

Docker软件

ubuntu基础镜像(直接在线pull一个就好,也可以使用centos,都一样)

apache-tomcat-8.5.3.tar.gz  

jdk-8u91-linux-x64.tar.gz

准备:

创建一个文件夹,放入jdk,tomcat,以及Dockerfile文件。由于脚本内地址都是以Dockerfile目录的相对地址,所以为了方便我们放在同一个文件夹下。

我这里放在/usr/docker/tomcat/文件夹下。如图:

Dockerfile文件:

FROM  ubuntu:14.04
MAINTAINER    sb

#把java与tomcat添加到容器中
ADD apache-tomcat-8.5.3.tar.gz /usr/local/
ADD jdk-8u91-linux-x64.tar.gz /usr/local/
#配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_91
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.3
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.3
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

#容器运行时监听的端口
EXPOSE  8080
#CMD ["startup.sh", "run"]

我们不在Dockerfile之中使用CMD指令,装完后从容器中启用。

build:

docker build -t sb/tomcat .

开启容器:

docker run -i-t-p 18080:8080 sb/tomcat

进入容器之后:

./usr/local/apache-tomcat-8.5.3/bin/startup.sh

此时tomcat开启,由于我是装完后回忆写的,所以没截图。

可以将这个容器保存为镜像,供以后使用:

docker commit -m "sb's new file"  ContainerID  sb/tomcat:ubuntu_14.04

测试:

可以在宿主机上面开启浏览器,http://ip:18080

注意,这里的ip是容器的映射ip,不是宿主机的ip,可以进入容器ifconfig查看一下,我的是127.0.0.1。

几点疑问,有知道可以 解答一下:

1.有时在执行dockerfile脚本时,报出找不到tar命令,一直安装中断,但有时不会,是基础镜像关闭了相关命令还是虚拟机不稳定的原因?

2.在使用已经解压的jdk以及tomcat文件夹来直接ADD进指定目录时,会发生文件丢失的现象,如没有startup.sh没了,虽然脚本成功执行,但是镜像是无法工作的?

3.使用docker run -d ...命令开启后台容器时,docker ps无法查出容器,-a后可以查出,也就是刚创建容器就停了,是因为镜像本身就无法运行么,导致自行退出?

 

 

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
小小怪医芙兰
粉丝 0
博文 11
码字总数 9473
作品 0
东城
加载中

评论(1)

zipon
zipon
为什么把java和tomcat的压缩包传进容器就可以了??不需要进到解压??
使用Dockerfile制作Docker镜像

使用Dockerfile制作Docker镜像 2017年06月03日 18:09:13 阅读数:2888 标签: docker-镜像Dockerfile 更多 个人分类: Docker 版权声明:本文为博主原创文章,未经博主允许不得转载。 https:...

linjin200
08/23
0
0
Docker入门学习四之自己制作Docker镜像

一、制作自己的镜像 1.前提 Dockerfile : 用来告诉Docker,我要怎么制作我的镜像,我要制作镜像的每一个操作是什么 docker build : 该命令用来执行Dockerfile中所描述的每一件事情,最终将...

aibinxiao
2017/11/03
0
0
制作【CentOs+tomcat7+jdk8】镜像

制作 CentOs+tomcat7+jdk8 镜像 前提说明: 一般公司使用的镜像: 1、需要长期使用的,所以Dockerfile文件,要写清楚版本号,不能下载 latest 版本,不然长时间使用,可能会因为长期使用,...

王振威
07/25
0
0
使用docker容器定制镜像(image)并部署简单 web应用

概念简述 镜像 一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。 Docker镜像是一个只读的模板。比如一个镜像可以包含...

zhaokx3
2017/05/25
0
0
gradle build docker image

前言:其实gradle-docker插件干的事和我们手动制作镜像是一样的,只不过它封装了一些步骤而已、 eg:如果我们要将项目打包成镜像,首先我们要写Dockerfile,这是制作镜像的不可或缺的第一步,...

liuzhijian
03/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

win32截屏并rgb24转yuv420

//最终f的内存布局为BGRA格式,需要保证buf长度足够(>w*h*4)void ScreenCap(void* buf, int w, int h){ HWND hDesk = GetDesktopWindow(); HDC hScreen = GetDC(hDesk); ......

styleman
48分钟前
1
0
php输出mysql取出的中文为??的问题

解决方法: @ $db=new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DB); $db->query("set names utf8");//添加此语句,可以解决问题...

Aomo
59分钟前
1
2
白话SpringCloud | 第五章:服务容错保护(Hystrix)

前言 前一章节,我们知道了如何利用RestTemplate+Ribbon和Feign的方式进行服务的调用。在微服务架构中,一个服务可能会调用很多的其他微服务应用,虽然做了多集群部署,但可能还会存在诸如网...

oKong
今天
2
0
【解惑】领略Java内部类的“内部”

内部类有两种情况: (1) 在类中定义一个类(私有内部类,静态内部类) (2) 在方法中定义一个类(局部内部类,匿名内部类) 1、私有内部类 —— 在方法之间定义的内部类,非静态 我们首先看看类中...

偶尔诗文
今天
1
0
sqlserver 2008 r2 直接下载地址(百度云)

之前下载的sqlserver2008发现不能附加,就卸载了,重新找到了sqlserver2008R2的百度云资源 卸载sqlserver2008还是有点麻烦,不过就是需要删除注册表中的信息 自己来回卸载了3次终于重装sqlse...

dillonxiao
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部