dockerFile java环境 配置 与 jdk8 各系统安装包直链下载
macosx-x64.dmg
https://mirrors.huaweicloud.com/java/jdk/8u191-b12/jdk-8u191-macosx-x64.dmg
windows64位.exe
https://mirrors.huaweicloud.com/java/jdk/8u191-b12/jdk-8u191-windows-x64.exe
linux-x64.tar.gz
https://mirrors.huaweicloud.com/java/jdk/8u191-b12/jdk-8u191-linux-x64.tar.gz
其他java8版本下载
https://www.aliyundrive.com/s/j3WYi1xVp5b
1、下载 jdk8
mkdir -p /Dockerfile
下载jdk,并上传到服务器目录==/docker/jdk==;
2、创建 Dockerfile
创建目录
cd /Dockerfile
# 生成 Dockerfile
touch Dockerfile
# 生成镜像脚本
touch setup.sh
# 启动容器脚本
touch start.sh
# 进入容器脚本
touch enter.sh
/Dockerfile
# 设置docker的运行环境,根据你的版本来 不然可能失败
基础指令
FROM
基于哪个镜像
MAINTAINER
用来写备注信息,例如作者、日期等。
COPY
复制文件进入镜像(只能用相对路径,不能用绝对路径)
ADD
复制文件进入镜像(可以用绝对路径,假如是压缩文件会解压)
WORKDIR
指定工作目录,假如路径不存在会创建路径
ENV
设置环境变量
EXPOSE
暴露容器端口到宿主机
RUN
在构建镜像的时候执行一条命令,作用于镜像层面
shell命令格式:RUN yum install -y net-tools
exec命令格式:RUN [ "yum","install" ,"-y" ,"net-tools"]
ENTRYPOINT
在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
CMD
在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
容器启动后执行默认的命令或者参数,允许被修改
安装jdk
同级目录下创建一个Dockerfile,必须叫这个名字
[root@localhost file]# ll
total 181296
-rw-r--r--. 1 root root 0 Oct 31 10:34 Dockerfile
-rw-r--r--. 1 root root 185646832 Mar 28 2019 jdk-8u181-linux-x64.tar.gz
编写Dockerfile
[root@localhost file]# vim Dockerfile
[root@localhost file]# cat Dockerfile
# 基于cntos7,如果没有这个镜像那么它会下载这个镜像。
FROM centos:7
# 编写人
MAINTAINER qqj
# 为Dockerfile中所有RUN、CMD、ENTRYPOINT、COPY和ADD指令设定工作目录
WORKDIR /usr
# 执行命令(这里创建了一个目录)
RUN mkdir /usr/local/java
# 和copy一样,复制文件到指定目录,但是copy不能解压,add自动解压
ADD jdk-8u341-linux-x64.tar.gz /usr/local/java
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_341
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
执行dockerfile文件,创建的镜像名为jdk1.8,最后面的点表示当前目录(即dockerfile所在目录)
docker build -t java:8-jre .
并且要解压到现实目录安装jdk
#新建文件夹
mkdir /usr/local/java
//解压到指定文件夹
tar -zxvf /Dockerfile/jdk-8u341-linux-x64.tar.gz -C /usr/local/java
接下来配置环境变量,输入:vim /etc/profile进入编辑模式,先按i键进入编辑模式,然后把光标移动到最后面,在文件末尾加上:
#java环境变量配置
JAVA_HOME=/usr/local/java/jdk1.8.0_341
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
JRE_HOME=$JAVA_HOME/jre
export PATH JAVA_HOME CLASSPATH JRE_HOME
或
#java环境变量配置
export JAVA_HOME=/usr/local/java/jdk1.8.0_341
export PATH=$PATH:$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
退出之后输入:source /etc/profile重新加载配置文件
然后java -version查看安装情况,一般情况下肯定是安装成功的。
# . 代表着当前上下文
[root@localhost file]# docker build -t='java:8-jre' .
Sending build context to Docker daemon 201.8MB
Step 1/10 : FROM centos:7
---> 67fa590cfc1c
Step 2/10 : MAINTAINER 吴磊
---> Running in 82b0855b713c
Removing intermediate container 82b0855b713c
---> 6ba6c5306ef5
Step 3/10 : WORKDIR /usr
---> Running in 53f979aa515b
Removing intermediate container 53f979aa515b
---> 623ec9ba1c71
Step 4/10 : RUN mkdir /usr/local/java
---> Running in f074844393c7
Removing intermediate container f074844393c7
---> 05a226b05d2f
Step 5/10 : ADD jdk-8u181-linux-x64.tar.gz /usr/local/java
---> 99a917b34d5c
Step 6/10 : RUN ln -s /usr/local/java/jdk1.8.0_181 /usr/local/java/jdk
---> Running in ccdf92640d65
Removing intermediate container ccdf92640d65
---> 93d145bf041d
Step 7/10 : ENV JAVA_HOME /usr/local/java/jdk
---> Running in bcded531db5a
Removing intermediate container bcded531db5a
---> 715630eea4d3
Step 8/10 : ENV JRE_HOME ${JAVA_HOME}/jre
---> Running in c9aa4b7df0db
Removing intermediate container c9aa4b7df0db
---> 97050481ab7a
Step 9/10 : ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
---> Running in 0123f3ea1213
Removing intermediate container 0123f3ea1213
---> 8304bed832f1
Step 10/10 : ENV PATH ${JAVA_HOME}/bin:$PATH
---> Running in 66e39b8befef
Removing intermediate container 66e39b8befef
---> 437729c49ac1
Successfully built 437729c49ac1
Successfully tagged jdk1.8:latest
查看所有的镜像,此时就多了一个jdk1.8
[root@localhost file]# docker images
REPOSITORY TAG I MAGE ID CREATED SIZE
jdk1.8 latest 437729c49ac1 14 seconds ago 584MB
centos 7 67fa590cfc1c 2 months ago 202MB
制作容器并进到容器里面(能看到java版本号就没问题了)
[root@localhost file]# docker run -it --name=java java:8-jre /bin/bash
[root@98c7b9225445 usr]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@98c7b9225445 usr]#
部署jar包
[root@localhost demo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk1.8 latest 437729c49ac1 3 days ago 584MB
centos 7 67fa590cfc1c 2 months ago 202MB
[root@localhost demo]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
jar包同级目录创建Dockerfile
setup.sh 执行脚本 根据你想要的标签来定
docker build -t java:8-jre .
# . 代表着当前上下文
[root@ jdk]# sh setup.sh
Sending build context to Docker daemon 143.1MB
Step 1/8 : FROM centos
---> 0d120b6ccaa8
Step 2/8 : MAINTAINER ALEX
---> Using cache
---> c713e2db9476
Step 3/8 : ADD jdk-8u271-linux-x64.tar.gz /usr/local/env/jdk/
---> Using cache
---> 2b44078a4757
Step 4/8 : ENV JAVA_HOME /usr/local/env/jdk/jdk1.8.0_271/
---> Using cache
---> 518acf43cd37
Step 5/8 : ENV PATH $JAVA_HOME/bin:$PATH
---> Using cache
---> da8791cd64c3
Step 6/8 : RUN yum -y install vim
---> Using cache
---> a4aa6cec7edf
Step 7/8 : RUN echo "alias ll='ls $LS_OPTIONS -l'" >> ~/.bashrc
---> Using cache
---> b2eb2cb33a02
Step 8/8 : RUN source ~/.bashrc
---> Using cache
---> cd096ee7d56c
Successfully built cd096ee7d56c
Successfully tagged jdk:1.8
查看生成的JDK镜像
[root@ jdk]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk 1.8 cd096ee7d56c 2 hours ago 628MB
运行容器 start.sh
docker stop jdk-test
docker rm jdk-test
docker run -itd --name jdk-test jdk:1.8
进入容器 enter.sh
docker exec -it jdk-test /bin/bash
进入容器后
[root@842e12c3e67b /]# java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
到此安装完毕
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库