Docker 使用DockerFile 安装Oracle jdk 1.8 运行环境
每日一句:如果你没有一颗打败困难的心,那就请不要随意触碰代码。闲话少说,上来就干。这次讲讲使用DockerFile 安装Oracle jdk1.8,由于花了几个晚上,走了不少弯路,所以必须记录一下,都怪自己蠢到........一、准备1、下载jdk进入Oracle 官网,找到需要的jdk,这里我使用jdk1.8版本(别问为啥,因为我喜欢啊!)。Oracl...
每日一句:如果你没有一颗打败困难的心,那就请不要随意触碰代码。
闲话少说,上来就干。这次讲讲使用DockerFile 安装Oracle jdk1.8,由于花了几个晚上,走了不少弯路,所以必须记录一下,都怪自己蠢到........
一、准备
1、下载jdk
进入Oracle 官网,找到需要的jdk,这里我使用jdk1.8版本(别问为啥,因为我喜欢啊!)。Oracle JDK下载 点击这里即可进入下载界面
请注意,千万别看到“JDK Download” 就立马兴奋的点进去下载,博主就是因为一时冲动导致花了很久都没有找到错误的原因,后面会介绍。这里点击我标记的链接进入,界面如下图所示:
下载好以后,使用xftp工具将需要的文件上传到linux服务器中,当前文件夹如下图所示:
2、编写DockerFile
使用touch 命令,创建Dockerfile,并编写脚本,脚本如下:
#!/bin/bash
# 使用Ubuntu作为基础镜像
FROM ubuntu:latest
# 维护人信息
MAINTAINER kevin tang, www.tanghuosong.com
# 切换到usr/local 目录下
WORKDIR ./usr/local
# 创建jdk目录
RUN mkdir jdk
# 对jdk赋权
RUN chmod 777 /usr/local/jdk
# 将下载的jdk 的压缩包拷贝到镜像中,注意 ADD和COPY的区别,ADD 会解压,COPY不会解压
ADD server-jre-8u241-linux-x64.tar.gz /usr/local/jdk
# 设置JAVA_HOME 的环境变量
ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_241
# 设置JAVA 环境
ENV CLASSPATH=$JAVA_HOME/bin:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
# 将java可执行文件设置到PATH中,这样就可以使用java命令了
ENV PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
# 向外暴露端口8088 ,这里只是演示,没有其他作用
EXPOSE 8088
# 执行java -version 命令
CMD ["java","-version"]
二、创建和运行
1、创建docker镜像
上面已经将Dockerfile 已经创建完毕,现在就可以使用命令创建docker镜像,执行命令
docker build -f Dockerfile -t jdk1.8 .
注意命令最后有一个“.”,代表当前路径下。执行结果如下
查看当前存在的镜像
2、运行docker镜像
上面镜像已经创建完成,现在可以启动docker镜像了。
执行命令:
docker run -dit -p 8088:8088 jdk1.8 /bin/bash
命令解释:-d 代表后台运行,it 表示可以交互,-p 为端口映射(将容器端口映射到宿主主机) ,/bin/bash可以让容器不启动后立马就停止。
执行结果:
使用docker ps 命令,查看当前正在运行的docker 容器,如上图所示。
3、验证配置
进入已经启动的docker容器中,验证是否正确配置jdk 环境,执行命令:
docker attach aad97bb0e7a4
命令解释:aad97bb0e7a4 是容器的ID
执行结果如下:
当前已经进入到相应的docker 容器里面。
输入java -version 验证,结果如下:
输出java版本,结果正确,代表配置完成。
三、问题及解决办法
1、docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"java\": executable file not found in $PATH": unknown.
问题可能原因:
(1)java环境变量安装失败,如第一步所示,如果jdk版本下载错误,可能安装失败,按照博主所示版本可解决。
(2)java解压后路径对应不上,如上面所示,jdk的压缩包名为server-jre-8u241-linux-x64.tar.gz,解压后名称为:jdk1.8.0_241,因此为了不确定因素,应该先解压一下,查看解压后文件名称。
2、docker: Error response from daemon: driver failed programming external connectivity on endpoint cocky_cohen (8d5aa6703e0c745dc1b1d05f81699c5bf5b6fa29253a622240070e5ad291d60c): Bind for 0.0.0.0:8088 failed: port is already allocated.
问题可能原因:
端口映射冲突导致,修改-p后面的端口即可。
更多推荐
所有评论(0)