从零开始构建一个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 ...
随机推荐
- 【vue】函数式组件
在 2.5.0 及以上版本中,如果你使用了单文件组件,那么基于模板的函数式组件可以这样声明: <template functional> <div class="cell& ...
- VGG16 ReNetInception network
VGG16就是运用很简单的2个filter s=2 f=2 的pool以及3x3 same padding的filter. 每pool一下以后 翻倍filter的depth Resnet就是跳级传播结 ...
- 网站robots.txt & sitemap.xml
1. 如何查看网站的robots.txt 网址/robots.txt, 比如小米 https://www.mi.com/robots.txt sitemap.xml
- jQuery之cookie操作
Cookies 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery.cookie.js基于jquery:先引入jquery,再引入:jq ...
- Day04.a(对象类型的转换,多态)
对象类型的转换 Dog dog = new Dog(); 通常情况下,对象(new Dog())类型和引用(dog)类型是相同的,当引用类型和对象类型不一致时,就需要类型转换. 向上转型:将较具体的类 ...
- spring MVC 项目 WEB-INF下的jsp不能加载css文件
一.项目目录 二.解决方法(已解决) 1. jsp文件加入 <link href="<c:url value="/css/main.css" />&qu ...
- php Excel 导入功能
下载excel类地址 https://pan.baidu.com/s/19MqAHUn4RyZ5HEAChyC0jg 密码:mn58 本人用的thinkcmf框架 把类文件放在框架的类文件里面,下面 ...
- Vuejs自定义select2指令
在做select2插件的时候遇到一些坑,最终解决如下: Vue.directive('select2', { inserted: function (el, binding, vnode) { var ...
- ubuntu18.04使用SPFlashTool提示缺少libpng12.so.0
Ubuntu libpng12无法安装解决 Ubuntu 14以上就已经不再支持libpng12,然而有些软件又依赖于libpng12(如我要使用的Cisco Packet Tracer).我们可以采 ...
- No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing instance of type Test (e.g. x.new A() where x is an instance of Test).
Java编写代码过程中遇到了一个问题,main方法中创建内部类的实例时,编译阶段出现错误,查看错误描述: No enclosing instance of type Test is accessibl ...