Dockerfile制作基于基础镜像的tomcat镜像
1.按照业务类型或系统类型等方式划分创建目录环境。
[root@docker ~]# mkdir -p /data/dockerfile/tomcat
2.目录下准备安装的相关文件,下载所需的安装包。
[root@docker ~]# cd /data/dockerfile/tomcat/
[root@docker tomcat]# wget https://yw-du.oss-accelerate.aliyuncs.com/jdk-8u161-linux-x64.tar.gz
[root@docker tomcat]# wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.55/src/apache-tomcat-9.0.55-src.tar.gz
3.编写dockerfile和readme.txt文件
[root@docker tomcat]# touch readme.txt
[root@docker tomcat]# vim Dockerfile
Dockerfile :
# centos系统作为底层
FROM centos
# 作者信息及邮箱
MAINTAINER xxxx@xxx.com
# 将readme.txt复制到容器的/usr/local/readme.txt
COPY readme.txt /usr/local/readme.txt
# 添加两个压缩包到 /usr/local之中,会自动解压缩
ADD jdk-8u181-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.52.tar.gz /usr/local/
# 运行两条命令:更新包和下载vim
RUN apt-get update -y
RUN apt-get install -y vim
# 定义环境变量
ENV MYPATH /usr/local
# 设置工作目录
WORKDIR $MYPATH
# 配置jdk环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_181
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 配置tomcat环境变量
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.52
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.52
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin/
# 暴露端口
EXPOSE 8080
# 执行命令
CMD /usr/local/apache-tomcat-9.0.52/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.52/bin/logs/catalina.out
4.构建镜像
sudo docker build -f Dockerfile -t test/tomcat:1.0 .
5.查看新镜像
sudo docker images
6.新建容器+挂载目录
sudo docker run -d -p 9090:8080 --name tomcat01 -v /test_tomcat/test:/usr/local/apache-tomcat-9.0.52/webapps/test -v /test_tomcat/tomcatlogs:/usr/local/apache-tomcat-9.0.52/logs test/tomcat:1.0
挂载了两个目录,一个保存webapp一个保存logs
-d
后台执行-p
指定端口映射--name
容器目录-v
数据卷挂载
7.测试发布网页
新建一个WEB-INF目录,再添加一个index.html
再在WEB-INF中新建一个web.xml文件
文件目录:
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
</web-app>
index.html
<!DOCTYPE html>
<html>
<head>
<title>text</title>
</head>
<meta charset="utf-8">
<body bgcolor="white">
<h1 align="center" >
<font color="purple red" face="华文楷体" size="10">text</font>
</h1>
<p>
<table border="1" width="700" height="100" bgcolor="white" align="center">
<tr bgcolor="red purple">
测试 测试 测试
</tr>
</table>
</p>
</body>
</html>
访问 localhost:8005/test
8.Docker Hub上发布镜像
(1)https://hub.docker.com/ 注册账号
(2) 确定账号可以登陆
(3)在服务器上提及自己的镜像
- 查看如何登陆
sudo docker login --help
- 登陆dockerhub
sudo docker login -u 用户名
- push 自己的镜像
注意如果这里不加上作者信息,会被拒绝提交
sudo docker push test/tomcat:1.0
- 如果push不了,请参考是不是应为该镜像名和用户表示是信息已经被人用了
- 使用docker tag给你的镜像改名
sudo docker tag test/tomcat:1.0 name/tomcat:1.0
再使用push命令来提交
sudo docker push name/tomcat:1.0
docker hub上查看新的镜像
9. 阿里云上发布镜像
(1)登陆阿里云
(2)进入阿里云镜像管理
(3)新建一个命名空间(一个用户只能免费创建三个)
(4)新建一个仓库(包含各种镜像)
(5)根据阿里云的镜像仓库操作指南进行操作:
退出之前登陆的DockerHub
sudo docker logout
登陆阿里云镜像
docker login --username=dc registry.cn-hangzhou.aliyuncs.com
将我们自己的镜像推送到阿里云
坑1:给你自己的镜像名更改名字为阿里云提供的这个。也就是你前面新建的仓库的名字(全路经),重新打上一个tag进行发布
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/dc/dc_test:[镜像版本号
使用docker push吧!
docker push registry.cn-hangzhou.aliyuncs.com/dc/dc_test:[镜像版本号]
看看我push的结果:
sudo docker push dc_test
再去阿里云上看看
相关文章
- 通过案例带你轻松玩转JMeter连载(36)
- 干货 | 携程机票 App KMM 跨端生产实践
- 精妙绝伦的并发艺术品 — ConcurrentHashMap是如何保证线程安全的
- 生产上常用 JDK 版本 1.7 与 1.8 新特性
- 细说Java中的二维及多维数组
- Java 接口的所有子类都需要执行相同处理逻辑的推荐姿势
- 什么是解释型语言和编译型语言?
- 超过1W字深度剖析JVM常量池
- 22个2022年软件开发的趋势预测及其解读
- 并发编程系列之ReentrantLock用法简介
- 微软公布 VS Code Java 2022 年路线图
- Groovy热更新Java实践
- java高级特性:使用反射实现万能序列化1
- 如何成为合格的Java开发人员
- Nginx主配置参数详解,Nginx配置网站
- Java正则表达式学习笔记
- Java线程池面试必备:核心参数、工作流、监控、调优手段
- 打不过就改变 Java 未来,微软官宣加入 JCP 计划:将参与制定 Java 平台规范
- Java 国际化
- 检测 JVM 自身物理内存用量(RSS)的小技巧