惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园_首页
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
ThreatConnect
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
H
Help Net Security
T
Threat Research - Cisco Blogs
Blog — PlanetScale
Blog — PlanetScale
A
Arctic Wolf
G
Google Developers Blog
量子位
U
Unit 42
I
InfoQ
V
V2EX
F
Fox-IT International blog
P
Privacy & Cybersecurity Law Blog
V
Visual Studio Blog
J
Java Code Geeks
大猫的无限游戏
大猫的无限游戏
C
CERT Recently Published Vulnerability Notes
博客园 - 三生石上(FineUI控件)
T
The Exploit Database - CXSecurity.com
T
Tailwind CSS Blog
SecWiki News
SecWiki News
Know Your Adversary
Know Your Adversary
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
The Hacker News
The Hacker News
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
C
Cisco Blogs
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
O
OpenAI News
Recorded Future
Recorded Future
T
Tenable Blog
W
WeLiveSecurity
腾讯CDC
Stack Overflow Blog
Stack Overflow Blog
T
The Blog of Author Tim Ferriss
www.infosecurity-magazine.com
www.infosecurity-magazine.com
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
PCI Perspectives
PCI Perspectives

技术改变视野

为程序员、设计师打造的摸鱼社区:摸鱼派! - 技术改变视野 我在 GitHub 上的开源项目 - 技术改变视野 为IDEA/Git配置GPG密钥,点亮GitHub Verified Commit标识 - 技术改变视野 从 SpringMVC 转为使用 SpringBoot —— 手把手带你使用 Intellij IDEA 最快速地搭建 SpringBoot+MyBatis(无 XML)+Thymeleaf - 技术改变视野 无题 - 技术改变视野 年轻人的第一辆京牌电动车 - 技术改变视野 我们忙碌且漫长的一生,有多久是为自己而活? 说说《后浪》 - 技术改变视野 离线使用 Google Fonts:让你的网站更精致 | goofoffline 神器,一键下载生成离线字体库! - 技术改变视野 🎨 适用于 Solo / Bolo 的清新高级主题 —— Sakura | 移植自 WordPress 主题 - 技术改变视野 大白话之Java级联调用:一个类,一条语句,同时调用好几个方法,串成一串 - 技术改变视野 大白话 | Java初学指♂男:“说说初学的误区与死结”( 壹 | 反射与Field ) - 技术改变视野 一个实例理解Java的接口(interface)用处与用法 一个实例带你理解JavaBean WebFilter-SpringBoot过滤器注解实例讲解 - 技术改变视野 实例带你搞懂Java多线程&&线程池之(壹):线程池与多线程的关系和区别 实例带你搞懂Java多线程&&线程池之(贰):简单的线程池应用 - 技术改变视野 实例带你获取多线程Thread的返回值之 (壹) - Callable的运行 - 技术改变视野 实例带你学会简单的Java Thread多线程 - 技术改变视野 实例带你获取多线程Thread的返回值之 (贰) - Callable配合线程池返回数据 一个实例理解Java Runnable多线程用处与用法 一个最简单的实例理解Semaphore在Java中的作用 从零开始OpenSSL之 (壹) - 使用genrsa、rsa、rsautl生成公私钥 从零开始 OpenSSL 之 (贰) - 使用 rsautl 解密文件 大白话之Docker(壹):快速入门&&简单官方实例 大白话之耦合性:什么是耦合性和内聚性?用编程语言实例讲解! - 技术改变视野 大白话之Docker(贰):简单部署一个Tomcat服务并发布内容 - 技术改变视野 大白话之从零讲解DVWA(壹)-SQL注入(SQL Injection) Low Level - 技术改变视野 大白话之从零讲解DVWA(贰)-SQL注入(SQL Injection) Medium/High Level Java日志插件-Slog4J下载 大白话之必会Java Atomic | 线程一点也不安全(一):比自增和synchronized更快速、靠谱的原子操作(调用C语言) Log-MySQL root用户登录后无法查看数据库全部表/正常访问数据库 Access denied for user 'root'@'localhost' to database - 技术改变视野 Github仅保留指定文件/文件夹当前Commit,删除所有历史记录,清除「敏感信息」 - 技术改变视野 将Tomcat、MySQL从Linux迁移到Windows的心路历程(干货):令人恐惧的字符编码 - 技术改变视野 Spring: java.lang.NoSuchMethodError: clearCache | ClassNotFoundException | Error during artifact deployment 思路及解决办法 - 技术改变视野 大白话之Java反射-初学最迷的概念:能干啥?咋用? 大白话之Java面向接口编程:最“正经”的中文实例讲解,看不懂来打我! - 技术改变视野 大白话 | 课堂实践:使用Iterator对数组进行遍历 大白话之fail-fast | fail-safe:为什么会有这个机制?它有什么作用? 刨根问底 | 大白话:在使用注解后,框架是怎么知道你哪个方法使用了注解的?用@RequestMapping注解举例详解! - 技术改变视野 大白话之必会Java Atomic | 线程一点也不安全(二):Atomic的ABA问题会导致什么情况?如何解决? - 技术改变视野 随笔 | 奇淫技巧 | Java:记return和短路运算符的妙用 - 技术改变视野 随笔 | Tomcat:续-从Linux迁移到Windows编码问题彻底解决 - 技术改变视野 大白话之AutoClosable接口 | try-with-resources:JDK1.7的新特性,提高重复回收效率 - 技术改变视野 大白话之Java多线程join方法:开局一张图,试学一分钟,你就费和我一样,理解介个方法 大白话之Java Stream流:将类数组流化,便捷批量修改,通俗讲解! Java 困扰三周の问题:使用byte[]或skip()方法读取字节流Stream文件尾部多/少/缺字节解决方法 - 技术改变视野
大白话之Docker(叁):制作一个运行Tomcat服务端的Docker镜像 - 技术改变视野
adlered · 2019-12-09 · via 技术改变视野

前言

如没看过上一章,请点我跳转

上一章我们使用Tomcat镜像搭建了一个WEB服务端。
本章,我们将从零开始搭建一个Tomcat服务端。大体需要以下步骤:

  1. 在容器中安装一个系统(我使用Ubuntu)
  2. 在容器中安装JDK并配置环境变量以运行Tomcat
  3. 在容器中拷贝Tomcat

既然目标已经明确,那么我们就开始吧。

初始化项目

下载文件

在项目开始之前,我们需要下载所需的文件:

JDK 1.8
Tomcat 9

解压文件

将JDK和Tomcat的压缩包解压,并新建一个文件夹用于存放该镜像所需的文件,把解压后的文件夹拷贝到该文件夹中。

1adler@localhost ~/dockerTomcat: tar -zxvf jdk-8u201-linux-x64.tar.gz
2adler@localhost ~/dockerTomcat: tar -zxvf apache-tomcat-9.0.13.tar.gz
3adler@localhost ~/dockerTomcat: ls
4apache-tomcat-9.0.13 jdk1.8.0_201

Dockerfile

Dockerfile就像一个脚本语言,它用于告知Docker如何制作一个镜像。让我们在Docker目录中新建一个Dockerfile文件,编辑内容:

 1FROM ubuntu
 2MAINTAINER AdlerED
 3ENV REFRESHED_AT 2019-04-14
 4
 5WORKDIR /usr
 6RUN mkdir jdk
 7RUN mkdir tomcat
 8ADD jdk1.8.0_201 /usr/jdk
 9ADD apache-tomcat-9.0.13 /usr/tomcat
10
11ENV JAVA_HOME=/usr/jdk
12ENV JRE_HOME=$JAVA_HOME/jre
13ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
14ENV PATH=/sbin:$JAVA_HOME/bin:$PATH
15
16EXPOSE 8080
17ENTRYPOINT ["/usr/tomcat/bin/catalina.sh","run"]

看不懂?没关系,这里有常用命令解释:

 1FROM 使用镜像
 2RUN 执行命令
 3ADD 添加文件
 4COPY 拷贝文件
 5CMD 执行命令
 6EXPOSE 执行命令
 7WORKDIR 指定路径
 8MAINTAINER 维护者
 9ENV 设定环境变量
10USER 指定路径
11VOLUME 逻辑卷挂载点

这样,我们就在Ubuntu的基础上安装了JDK并配置好了环境。

制作镜像

保存Dockerfile。下面让我们构造一个Docker镜像:

注意:命令中有一个".",表示当前目录下的所有文件/文件夹。

 1adler@localhost ~/dockerTomcat: docker build -t tom1 .
 2Sending build context to Docker daemon    465MB
 3Step 1/14 : FROM ubuntu
 4latest: Pulling from library/ubuntu
 5898c46f3b1a1: Already exists
 663366dfa0a50: Already exists
 7041d4cd74a92: Already exists
 86e1bee0f8701: Already exists
 9Digest: sha256:017eef0b616011647b269b5c65826e2e2ebddbe5d1f8c1e56b3599fb14fabec8
10Status: Downloaded newer image for ubuntu:latest
11 ---> 94e814e2efa8
12Step 2/14 : MAINTAINER AdlerED
13 ---> Running in 0d8881a48673
14Removing intermediate container 0d8881a48673
15 ---> 096a71fce35c
16Step 3/14 : ENV REFRESHED_AT 2019-04-14
17 ---> Running in cc70cde8bbdf
18Removing intermediate container cc70cde8bbdf
19 ---> 5e729baf8ba6
20Step 4/14 : WORKDIR /usr
21 ---> Running in ffafbb0c2f39
22Removing intermediate container ffafbb0c2f39
23 ---> 5c67d2c834b8
24Step 5/14 : RUN mkdir jdk
25 ---> Running in 456ba09c5f78
26Removing intermediate container 456ba09c5f78
27 ---> 4b20a82e75b2
28Step 6/14 : RUN mkdir tomcat
29 ---> Running in 4e37fa2c7f1e
30Removing intermediate container 4e37fa2c7f1e
31 ---> 36be7992366e
32Step 7/14 : ADD jdk1.8.0_201 /usr/jdk
33 ---> b73582ceb345
34Step 8/14 : ADD apache-tomcat-9.0.13 /usr/tomcat
35 ---> de37ef37b5f0
36Step 9/14 : ENV JAVA_HOME=/usr/jdk
37 ---> Running in 2fb661484354
38Removing intermediate container 2fb661484354
39 ---> 65486f651010
40Step 10/14 : ENV JRE_HOME=$JAVA_HOME/jre
41 ---> Running in 589b25aee5c9
42Removing intermediate container 589b25aee5c9
43 ---> 21ff9fc63c15
44Step 11/14 : ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
45 ---> Running in 0041fb914b69
46Removing intermediate container 0041fb914b69
47 ---> d4e69f027c43
48Step 12/14 : ENV PATH=/sbin:$JAVA_HOME/bin:$PATH
49 ---> Running in dca277cebf53
50Removing intermediate container dca277cebf53
51 ---> 1d17efbfa7f7
52Step 13/14 : EXPOSE 8080
53 ---> Running in 3c34d45b2b12
54Removing intermediate container 3c34d45b2b12
55 ---> cb23d57bbad3
56Step 14/14 : ENTRYPOINT ["/usr/tomcat/bin/catalina.sh","run"]
57 ---> Running in a568509006bf
58Removing intermediate container a568509006bf
59 ---> c3f64777810c
60Successfully built c3f64777810c
61Successfully tagged tom1:latest

这样,我们就成功将Tomcat制作为了一个镜像。让我们运行它:

1adler@localhost ~/dockerTomcat: docker run -it -p 8080:8080 tom1

不出意外的话,访问http://localhost:8080,你应该可以看到Tomcat的默认页了。

后语

此时,我们成功搭建了一个Tomcat的运行环境,它基于Ubuntu。至此,你已经成功入门了Docker!