CentOS7 从零开始搭建一个jdk+tomcat的docker环境

搭建的基础

  • Linux: CentOS-7-x86_64-DVD-1810.iso
  • Docker: docker-ce-18.03.1.ce
  • Java: jdk-8u231-linux-x64.tar.gz
  • Tomcat: apache-tomcat-8.5.50.tar.gz

安装Docker

要搭建一个docker环境,必须要在服务器上先安装docker,首先我们进行docker的安装

Docker 要求 CentOS 系统的内核版本高于 3.10,首先需要查看一下自己的linux内核是否高于3.1,满足要求在进行下面的操作

uname -r

安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

配置镜像源,国外镜像一般很难访问,建议配置阿里云镜像

中央镜像

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

阿里镜像

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

查看下仓库中有哪些镜像,选择自己需要的镜像版本

yum list docker-ce --showduplicates
image.png

这里安装最新的稳定版

yum install docker-ce-18.03.1.ce

安装好后查看下docker运行状态

systemctl status docker

如果没有启动docker,启动一下

systemctl start docker

也可以设置为docker开机自动启动

systemctl enable docker

拉取Docker官方centos镜像

查询 centos 相关的镜像

docker search centos
image.png

拉取docker镜像

docker pull 镜像名

因为我们是手工构建自己的docker CentOS镜像,这里我们拉取一个centos就可以了

image.png

查看下一下我们下载好的image

docker images
image.png

通过Dockerfile 构建镜像

  • docker commit命令(这里发布的镜像没有记录过程)
  • docker build命令和Dockerfile文件(更为强大、灵活和常用,可以清晰的看到怎么构建docker的步骤)

jdk和Tomcat就不通yum命令安装,因为实际项目中进程有对应的版本,这里我们上传我们已经下载好了的版本到服务器上,首先在服务器上指定的目录创建dockerfile文件夹,把jdk和Tomcat上传到这个文件夹

# cd /home/
# mkdir dockerFile

解压两个文件

# tar -zxvf apache-tomcat-8.5.50.tar.gz 
# tar -zxvf jdk-8u231-linux-x64.tar.gz 

在目录下创建Dockerfile文件,然后vim书写

touch Dockerfile 
image.png

Dockerfile 一些基本语法

  • FROM : 指定基础镜像,并且必须是第一条指令
  • MAINTAINER : 指定作者
  • RUN : 运行指定的命令
  • ADD : 复制命令,把文件复制到镜像中,ADD会对压缩文件(tar, gzip, bzip2, etc)做提取和解压操作
  • COPY : 将主机的文件复制到镜像内,如果目的位置不存在,Docker会自动创建所有需要的目录结构,但是它只是单纯的复制,并不会去做文件提取和解压工作
  • ENV : 设置环境变量
  • EXPOSE : 功能为暴漏容器运行时的监听端口给外部
  • CMD : 指定容器启动时运行的命令
  • ENTRYPOINT : 容器启动时执行的命令
  • WORKDIR : 在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
    注意:CMD的命令会被 docker run 的命令覆盖而ENTRYPOINT不会

Dockerfile 脚本

#指定操作的镜像
FROM centos
# 维护者信息
MAINTAINER wangzhh

# 执行命令:创建jdk存放目录 mkdir -p 创建多级目录
RUN mkdir -p /home/jdk
# 执行命令:创建tomcat存放目录 mkdir -p 创建多级目录
RUN mkdir -p /home/tomcat

#将宿主机的jdk和tomcat拷贝到镜像文件上面创建的目录下,这里注意是相对目录,DockerFile的相对文件的路径,我这里放置的是同级
COPY jdk1.8.0_231 /home/jdk/jdk1.8.0_231
COPY apache-tomcat-8.5.50 /home/tomcat/apache-tomcat-8.5.50

#设置环境变量
ENV JAVA_HOME=/home/jdk/jdk1.8.0_231
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH=/sbin:$JAVA_HOME/bin:$PATH

#暴露8080端口
EXPOSE 8080

执行Dockerfile构建Docker镜像

docker build -t wangzhh/jdk_tomcat:20200309 . 

-t 设置tag名称, 命名规则registry/image:tag(若不添加版本号,默认latest)
. 表示使用当前目录下的Dockerfile文件,注意语句后面有一个点

如下,我们就基于centos的基础镜像构建了一个java+tomcat的镜像


image.png

开放服务器8080端口

# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# systemctl restart firewalld.service
# firewall-cmd --reload

加载镜像测试一下

docker run -d -it -p 8080:8080 --name ecs_docker wangzhh/jdk_tomcat:20200309

如果上面构建的时候没有加:tag版本号 就是:20200309
可以docker run -d -it -p 8080:8080 --name ecs_docker wangzhh/jdk_tomcat启动

Options Mean
-i 以交互模式运行容器,通常与 -t 同时使用
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-p 指定端口映射,格式为:主机(宿主)端口:容器端口

进入docker

docker exec -it ecs_docker /bin/bash

测试下java版本


image.png

启动tomcat浏览器访问下


image.png
image.png

到这里搭建一个jdk+tomcat的images就结束了,我们也可以打包成tar,让其他人直接使用

docker  save  -o  tar包的名字  镜像名
image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358

推荐阅读更多精彩内容