win10下docker采用Dockerfile安装jdk1.8
一、安装docker
省略
二、docker使用
window下控制台下操作结果:
2.1 检查docker是否安装成功
省略
2.2 安装centos
CentOS 7是3.10的内核,此处我们选择用CentOS 7操作系统
镜像仓库选用Docker官方的:https://hub.docker.com/explore/
docker pull centos
先检查Linux系统是32位还是64位
power shell进入虚拟机
docker-machine ssh default
该命令默认安装最新版 latest,命令:docker images 查看
2.3 docker中的jdk
在该Docker容器中,我们只下载了一个centos的镜像,也就是说docker容器中有centos,我们可以运行该centos操作系统。那我们怎么样把jdk放入到centos镜像中,让docker容器运行的时候不但有centos,而且有jdk?应该在centos的镜像的基础上再做一个镜像,该镜像中既包含centos,也包含jdk。
所以我们要使用DockerFile的技术在centos基础镜像的基础上再次构建一个镜像为jdk的镜像。
2.3.1查询linux版本,命令: getconf LONG_BIT,不行用
uname -a
2.3.2下载jdk
1. 官网:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
注:我是64位,先下载了前者,安装完了查看java -version就一直报错,没关系不行了都试试。这里建议先下载截图第二个。
2. 在任意位置建立工作目录,我在D:\docker\centos
3. 将下载的jdk文件放入并新建一个Dockerfile文件,如上图所示;打开git-bash输入
vim Dockerfile
#建立一个新的镜像文件,配置模板:意思就是我新建立的镜像是以centos为基础模板的。因为jdk必须运行在操作系统之上
FROM centos
#配置作者信息 作者名 作者邮箱
MAINTAINER mai aaa@qq.com
#创建一个新目录来存储jdk文件
RUN mkdir /usr/local/java
#将jdk压缩文件复制到镜像中,它将自动解压缩tar文件
ADD jdk-8u261-linux-x64.tar.gz /usr/local/java/
#创建同步链接 保持同步:ln -s 源文件 目标文件
RUN ln -s /usr/local/java/jdk1.8.0_261 /usr/local/java/jdk
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
4. 制作镜像
cmd控制台进入该工作路径下
docker build -t="centos-jdk" .(后边的 . 不能少,意为当前目录下执行)
查看镜像命令:docker images
5. 建立容器,查看新的镜像中的JDK是否正确
根据一个镜像就可以启动一个容器,容器是系统的运行环境
docker run --name centos-j -it centos-jdk /bin/bash
或
winpty docker run --name centos-j -it centos-jdk sh
查看jdk:java -version # 出来结果表明配置没问题
进入安装jdk路径 通过ls查看该目录下存在jdk目录与解压好的jdk1.8.0_221。
通过ls -l可以查看到jdk是来自于jdk1.8.0_221的链接
三、命令解释
1、exec:进入docker容器内部进行各种操作
1、-it:进入控制台,并且有数据操作的交互
2、bash:用命令行进行操作
如上启动centos-jdk和centos
四、踩坑
1.查询Java -version报错 /usr/local/java/jdk/bin/java: cannot execute binary file: Exec format error
解决:出错是因为下载了下面的jdk,百度说是树莓派专用…反正这个错误肯定是版本不匹配,多试几个
2.报错java: command not found
解决:建议环境变量啥的能复制就复制,不要自己敲,命令不懂的百度理解,懂了才好排错。检查Dockerfile是否编译有误,我是源文件jdk1.8.0_261以为随便写的就写成了jdk1.8.0_221…需要看下安装包里正确的写法,保持一致即可。
#创建同步链接 保持同步:ln -s 源文件 目标文件
RUN ln -s /usr/local/java/jdk1.8.0_261 /usr/local/java/jdk
完事收工!
原帖链接:https://www.cnblogs.com/liwenhong199404/p/11550802.html
另一个好玩的:https://www.cnblogs.com/linjj/p/5606911.html
https://www.cnblogs.com/linjj/p/5606833.html
上一篇: 牛客网-华为机试刷题(二)
下一篇: Anguler入门开发