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

你可能感兴趣的:(CentOS7 从零开始搭建一个jdk+tomcat的docker环境)