从零开始构建一个centos+jdk7+tomcat7的docker镜像文件
从零开始构建一个centos+jdk7+tomcat7的镜像文件
准备centos基础镜像
docker pull centos
或者直接下载我准备好的镜像
docker pull registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.
准备jdk7和tomcat7安装包
- 创建工作目录, mkdir -p /z/docker
- 准备下载jdk7的tar.gz包http://download.oracle.com/otn/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz
- 解压到目录/z/docker下, 并重命名为jdk
- 准备下载tomcat7的tar.gz包http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.75/bin/apache-tomcat-7.0.75.tar.gz
- 解压到目录/z/docker下, 并重命名为tomcat
- 删掉jdk文件夹下多余文件, 降低build的镜像大小
rm -rf /z/docker/jdk/*src.zip \
/z/docker/jdk/lib/missioncontrol \
/z/docker/jdk/lib/visualvm \
/z/docker/jdk/lib/*javafx* \
/z/docker/jdk/jre/lib/plugin.jar \
/z/docker/jdk/jre/lib/ext/jfxrt.jar \
/z/docker/jdk/jre/bin/javaws \
/z/docker/jdk/jre/lib/javaws.jar \
/z/docker/jdk/jre/lib/desktop \
/z/docker/jdk/jre/plugin \
/z/docker/jdk/jre/lib/deploy* \
/z/docker/jdk/jre/lib/*javafx* \
/z/docker/jdk/jre/lib/*jfx* \
/z/docker/jdk/jre/lib/amd64/libdecora_sse.so \
/z/docker/jdk/jre/lib/amd64/libprism_*.so \
/z/docker/jdk/jre/lib/amd64/libfxplugins.so \
/z/docker/jdk/jre/lib/amd64/libglass.so \
/z/docker/jdk/jre/lib/amd64/libgstreamer-lite.so \
/z/docker/jdk/jre/lib/amd64/libjavafx*.so \
/z/docker/jdk/jre/lib/amd64/libjfx*.so
进入/z/docker目录, 在当前目录下创建Dockerfile文件
cd /z/docker
vi Dockerfile #插入以下内容
#使用的基础镜像
FROM registry.cn-hangzhou.aliyuncs.com/repos_zyl/centos:0.0.
#作者信息
MAINTAINER yzzhouyalei "yzzhouyalei@foxmail.com" #创建目录
RUN mkdir -p /z/java/jdk1..0_79
#把当前目录下的jdk文件夹添加到镜像
ADD jdk /z/java/jdk1..0_79 #创建tomcat目录
RUN mkdir -p /z/java/apache-tomcat-7.0.
#把当前目录下的tomcat文件夹添加到镜像
ADD tomcat /z/java/apache-tomcat-7.0. #添加环境变量
ENV JAVA_HOME /z/java/jdk1..0_79
ENV CATALINA_HOME /z/java/apache-tomcat-7.0.
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin #暴露8080端口
EXPOSE #启动时运行tomcat
CMD ["/z/java/apache-tomcat-7.0.70/bin/catalina.sh","run"]
开始构建docker镜像文件
docker build -t repos_local/centos-jdk7-tomcat7:0.0. .
-t 设置tag名称, 命名规则registry/image:tag
. 表示使用当前目录下的Dockerfile文件
等待构建完成, 不出意外的话, 执行docker images将会得到以下结果
[root@localhost docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
repos_local/centos-jdk7-tomcat7 0.0. 2c5efe7056ce minutes ago 511.7 MB
repos_local/centos-jdk7-tomcat7镜像已经构建好了, 从这个镜像启动容器, 并配置好端口, 就能直接在浏览器上看到tomcat默认界面了
启动centos-jdk7-tomcat7容器
docker run -d -p : --name test-tomcat repos_local/centos-jdk7-tomcat7:0.0.
-d 后台运行
-p 宿主机port:容器port 端口映射
--name 容器名称, 可以通过容器名称对容器操作
如果系统没禁用防火墙的话, 可能需要开放8081端口
#直接执行命令, 开放端口号(重启后可能失效)
iptables -A INPUT -ptcp --dport -j ACCEPT
##或者
#直接修改iptables, 重启后不会失效
vi /etc/sysconfig/iptables
#插入以下内容
-A RH-Firewall--INPUT -m state --state NEW -m tcp -p tcp --dport -j ACCEPT
重启iptables服务
service iptables restart
centos7下可以直接使用firewall-cmd来开放端口
#开放8081端口 permanent为永久开放
firewall-cmd --zone=public --add-port=/tcp --permanent
#重新读取配置
firewall-cmd --reload
#查看全部开放端口
firewall-cmd --list-all
如果提示FirewallD is not running
执行systemctl start firewalld.service, 启动firewalld服务
直接在浏览器访问centos7系统的8081端口, 已经能看到tomcat的默认界面了
查看container容器的运行状态
[root@localhost docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0. "/z/java/apache-tomca" minutes ago Up minutes 0.0.0.0:8081->8080/tcp test-tomcat
现在的容器状态为Up, 运行中, 如何停止一个运行中的容器? 运行docker stop命令
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0. "/z/java/apache-tomca" hours ago Exited () minutes ago test-tomcat
[root@localhost docker]# docker start test-tomcat
test-tomcat
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0. "/z/java/apache-tomca" hours ago Up seconds 0.0.0.0:->/tcp test-tomcat
[root@localhost docker]# docker stop test-tomcat
test-tomcat
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0. "/z/java/apache-tomca" hours ago Exited () seconds ago test-tomcat
以上命令, 把一个容器从退出状态->运行中->退出状态
如何强制删除一个运行中的容器?
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1a49a277c235 repos_local/centos-jdk7-tomcat7:0.0. "/z/java/apache-tomca" hours ago Up seconds 0.0.0.0:->/tcp test-tomcat
[root@localhost docker]# docker rm -f test-tomcat
test-tomcat
[root@localhost docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost docker]#
docker rm 命令删除一个Exited状态的容器, docker rm -f 强制删除一个运行中的容器
到这里, 在centos7系统下构建docker镜像文件已经成功
另 , 可以直接使用官方的tomcat镜像 , 把自己的网站目录映射到容器内部
docker run -d -p :8080 --name test-tomcat --privileged=true -v 宿主机目录:/usr/local/tomcat/webapps/ tomcat:
如需帮助可向我发起QQ聊天发起QQ聊天
友情赞助
如果您喜欢此文,感觉对您工作有帮助,预期领导会给您涨工资,不妨小额赞助一下,让我有动力继续努力。
赞助方式:打开支付宝App,使用“扫一扫”付款,付款码见下图,别忘了付款留言哦!

或使用微信, 不用加好友就能付款
从零开始构建一个centos+jdk7+tomcat7的docker镜像文件的更多相关文章
- 构建一个拥有sshd服务的docker镜像
不直接描述结果,通过一个过程探究如何写一个 Dockerfile 一.环境 虚拟机CentOS7.4,Docker1.13.1 二.尝试步骤 1.下载基础镜像 docker pull alpine:3 ...
- 从零开始构建一个的asp.net Core 项目
最近突发奇想,想从零开始构建一个Core的MVC项目,于是开始了构建过程. 首先我们添加一个空的CORE下的MVC项目,创建完成之后我们运行一下(Ctrl +F5).我们会在页面上看到"He ...
- 从零开始构建一个的asp.net Core 项目(一)
最近突发奇想,想从零开始构建一个Core的MVC项目,于是开始了构建过程. 首先我们添加一个空的CORE下的MVC项目,创建完成之后我们运行一下(Ctrl +F5).我们会在页面上看到“Hello W ...
- 如何将docker镜像文件上传至Docker Hub
一.Docker Hub中新建存储库 注册,登录Docker Hub之后,点击右上角Create Repository,创建存储库,如下图所示: 取个名字,我这里取名为lihui_demo.并且可以选 ...
- 从零开始构建一个的asp.net Core 项目(二)
接着上一篇博客继续进行.上一篇博客只是显示了简单的MVC视图页,这篇博客接着进行,连接上数据库,进行简单的CRUD. 首先我在Controllers文件夹点击右键,添加->控制器 弹出的对话框中 ...
- .Net 从零开始构建一个框架之基本实体结构与基本仓储构建
本系列文章将介绍如何在.Net框架下,从零开始搭建一个完成CRUD的Framework,该Framework将具备以下功能,基本实体结构(基于DDD).基本仓储结构.模块加载系统.工作单元.事件总线( ...
- [计算机视觉]从零开始构建一个微软how-old.net服务/面部属性识别
大概两三年前微软发布了一个基于Cognitive Service API的how-old.net网站,用户可以上传一张包含人脸的照片,后台通过调用深度学习算法可以预测照片中的人脸.年龄以及性别,然后将 ...
- Docker镜像文件操作
1什么是Docker镜像 Docker镜像是由文件系统叠加而成(是一种文件的存储形式).最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统.Docker用户几乎永 ...
- Docker镜像文件存储结构
docker相关文件存放在:/var/lib/docker目录下 镜像的存储结构主要分两部分,一是镜像ID之间的关联,一是镜像ID与镜像名称之间的关联,前者的结构体叫Graph,后者叫TagStore ...
随机推荐
- Microsoft Internet Explorer v11 / XML External EntityInjection 0day
[+] Credits: John Page (aka hyp3rlinx) [+] Website: hyp3rlinx.altervista.org[+] Source: http://hyp3 ...
- MYSQL数据库的设计与调优
优化思路: 1.检查数据表结构,改善不完善设计 2.跑一遍主要业务,收集常用的数据库查询SQL 3.分析查询SQL,适当拆分,添加索引等优化查询 4.优化SQL的同时,优化代码逻辑 5.添加本地缓存和 ...
- window C/C++ 简单的IDE编译器
C-Free 官网链接: http://www.programarts.com/cfree_ch/download.htm
- Elemant-UI日期范围的表单验证
Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可.但是官网的示例只有普通日期类型的验证,没有时间 ...
- C# 用Serializer.ToXml()方法转换成两种格式的XML
常见XML格式两种: 这种是属性的格式,实体的Model属性上面加上这个特性 [XmlAttribute] <AAA aa="/> 这种是标签的格式,实体的Model属性上面加上 ...
- 最新传智播客web前端开发39期视频教程【完整版】
本套视频为传智2018web前端开发全套视频教程基础班+就业班,视频+源码+案例笔记,全套高清不加密~2018最新传智播客视频! 本教程是实战派课程!为传智最新web前端39期,挑战全网最全视频,没有 ...
- P5301 [GXOI/GZOI2019]宝牌一大堆
题目地址:P5301 [GXOI/GZOI2019]宝牌一大堆 这里是官方题解(by lydrainbowcat) 部分分 直接搜索可以得到暴力分,因为所有和牌方案一共只有一千万左右,稍微优化一下数据 ...
- 如何在submit上运行php文件
一..把php加入到环境变量 二.在sublmie中新建编译系统 三.添加一下代码,修改成php当前的目录地址,保存在默认的路径下,命名为php.sublime-build { "cmd&q ...
- HDU-魔咒词典(字符串hash)
魔咒词典 TimeLimit: 8000/5000 MS (Java/Others) MemoryLimit: 32768/32768 K (Java/Others) 64-bit integer ...
- 清晰讲解SQL语句中的外连接,通用于Mysql和Oracle,全是干货哦
直入主题: 我们做一个操作,将员工SCOTT的部门去掉,再次通过内连接查看数据,看看会产生什么现象? 使用内连接,查询数据 问题:找不到SCOTT员工了,只有13条数据,这显然不合理:这就是内连接的缺 ...