一、安装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 -a2.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 765120214@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:$PATH4. 制作镜像
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 另一个好玩的:创建自己的docker镜像并且在容器中运行它