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,滿足要求在進行下面的操作

<code>uname -r
/<code>

安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的

<code>sudo yum install -y yum-utils device-mapper-persistent-data lvm2
/<code>

配置鏡像源,國外鏡像一般很難訪問,建議配置阿里雲鏡像

中央鏡像

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

阿里鏡像

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

查看下倉庫中有哪些鏡像,選擇自己需要的鏡像版本

<code>yum list docker-ce --showduplicates
/<code>
CentOS7 從零開始搭建一個jdk+tomcat的docker環境

這裡安裝最新的穩定版

<code>yum install docker-ce-18.03.1.ce
/<code>

安裝好後查看下docker運行狀態

<code>systemctl status docker
/<code>

如果沒有啟動docker,啟動一下

<code>systemctl start docker
/<code>

也可以設置為docker開機自動啟動

<code>systemctl enable docker
/<code>

拉取Docker官方centos鏡像

查詢 centos 相關的鏡像

<code>docker search centos
/<code>
CentOS7 從零開始搭建一個jdk+tomcat的docker環境


拉取docker鏡像

<code>docker pull 鏡像名
/<code>

因為我們是手工構建自己的docker CentOS鏡像,這裡我們拉取一個centos就可以了

CentOS7 從零開始搭建一個jdk+tomcat的docker環境


查看下一下我們下載好的image

<code>docker images
/<code> 
CentOS7 從零開始搭建一個jdk+tomcat的docker環境

通過Dockerfile 構建鏡像

  • docker commit命令(這裡發佈的鏡像沒有記錄過程)
  • docker build命令和Dockerfile文件(更為強大、靈活和常用,可以清晰的看到怎麼構建docker的步驟)

jdk和Tomcat就不通yum命令安裝,因為實際項目中進程有對應的版本,這裡我們上傳我們已經下載好了的版本到服務器上,首先在服務器上指定的目錄創建dockerfile文件夾,把jdk和Tomcat上傳到這個文件夾

<code># cd /home/
# mkdir dockerFile
/<code>

解壓兩個文件

<code># tar -zxvf apache-tomcat-8.5.50.tar.gz 
# tar -zxvf jdk-8u231-linux-x64.tar.gz 
/<code>

在目錄下創建Dockerfile文件,然後vim書寫

<code>touch Dockerfile 
/<code>
CentOS7 從零開始搭建一個jdk+tomcat的docker環境


Dockerfile 一些基本語法

  • FROM : 指定基礎鏡像,並且必須是第一條指令
  • MAINTAINER : 指定作者
  • RUN : 運行指定的命令
  • ADD : 複製命令,把文件複製到鏡像中,ADD會對壓縮文件(tar, gzip, bzip2, etc)做提取和解壓操作
  • COPY : 將主機的文件複製到鏡像內,如果目的位置不存在,Docker會自動創建所有需要的目錄結構,但是它只是單純的複製,並不會去做文件提取和解壓工作
  • ENV : 設置環境變量
  • EXPOSE : 功能為暴漏容器運行時的監聽端口給外部
  • CMD : 指定容器啟動時運行的命令
  • ENTRYPOINT : 容器啟動時執行的命令
  • WORKDIR : 在構建鏡像時,指定鏡像的工作目錄,之後的命令都是基於此工作目錄,如果不存在,則會創建目錄
    注意:CMD的命令會被 docker run 的命令覆蓋而ENTRYPOINT不會

Dockerfile 腳本

<code>#指定操作的鏡像
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

/<code> 

執行Dockerfile構建Docker鏡像

<code>docker build -t wangzhh/jdk_tomcat:20200309 . 
/<code>

-t 設置tag名稱, 命名規則registry/image:tag(若不添加版本號,默認latest). 表示使用當前目錄下的Dockerfile文件,注意語句後面有一個點

如下,我們就基於centos的基礎鏡像構建了一個java+tomcat的鏡像


CentOS7 從零開始搭建一個jdk+tomcat的docker環境

開放服務器8080端口

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

加載鏡像測試一下

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

如果上面構建的時候沒有加:tag版本號 就是:20200309可以docker run -d -it -p 8080:8080 --name ecs_docker wangzhh/jdk_tomcat啟動


CentOS7 從零開始搭建一個jdk+tomcat的docker環境

進入docker

<code>docker exec -it ecs_docker /bin/bash
/<code>

測試下java版本


CentOS7 從零開始搭建一個jdk+tomcat的docker環境


啟動tomcat瀏覽器訪問下


CentOS7 從零開始搭建一個jdk+tomcat的docker環境


CentOS7 從零開始搭建一個jdk+tomcat的docker環境


到這裡搭建一個jdk+tomcat的images就結束了,我們也可以打包成tar,讓其他人直接使用

<code>docker  save  -o  tar包的名字  鏡像名
/<code>
CentOS7 從零開始搭建一個jdk+tomcat的docker環境


分享到:


相關文章: