自定义镜像 mycentosjava8
自定义一个centos镜像,具备vim+ifconfig+jdk8的配置
拉取centos镜像
docker pull centos
该默认镜像此时还没有vim、ifconfig和jdk的配置或功能
jdk8的下载
地址:https://www.oracle.com/java/technologies/downloads/#java8
当前使用版本 jdk-8u371,根据跟人情况决定
如果想要使用其他版本可访问https://mirrors.yangxingzhen.com/jdk/
将压缩包传输到myfile文件下,注意当前使用的版本 jdk-8u371
编写Dockerfile文件
Dockerfile:
FROM centos:7
MAINTAINER Dongguo
ENV MYPATH /usr/local
WORKDIR $MYPATH
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u371-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u371-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_371
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
注:
2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux 的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期缩短,于 2021 年 12 月 31 日停止更新并停止维护(EOL)。
如果没有特别指定版本号,FROM centos会使用最新的CentOS镜像。最新的CentOS镜像是CentOS 8。如果需要使用特定版本的CentOS镜像,可以在FROM语句中指定版本号。例如,FROM centos:7表示使用CentOS 7的镜像。
使用FROM centos 构建镜像时报错
Error: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist
上面的报错信息意思是,从仓库 ‘appstream’ 下载元数据失败:由于镜像列表中没有 URL,不能准备内部镜像列表。
问题分析:
第一种可能的情况便是网络连接问题。检查是否可以连接外部网络,可以使用 ping baidu.com 查看是否有丢包情况。如果丢包,则进一步检查网络连接是否正常;如果没有丢包,继续阅读下文
那么第二种情况,便是 CentOS 已经停止维护的问题。如果需要更新 CentOS,需要将镜像从 mirror.centos.org 更改为 vault.centos.org
针对问题二,可用如下方式解决
FROM centos:
MAINTAINER Dongguo
ENV MYPATH /usr/local
WORKDIR $MYPATH
#首先,进入到yum的repos目录
RUN cd /etc/yum.repos.d/
#其次,修改centos文件内容
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
#然后,生成缓存更新(第一次更新,速度稍微有点慢,耐心等待两分钟左右)
RUN yum makecache
#最后,运行yum update并重新安装vim
RUN yum update -y
#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看网络IP
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把jdk-8u371-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u371-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_371
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
EXPOSE 80
构建名为centosjava8的镜像
docker build -t 新镜像名字:TAG .
执行
docker build -t centosjava8:1.0 .
当前目录可以用**.**表示,非当前目录,需手动指定上下文目录
.它不是指 Dockerfile所在的目录,它代表的是(宿主)当前所在的目录,通常Dockerfile文件和上下文文件会放在同一个目录下,通过这个"."参数告诉docker在这个目录下查找上下文文件。如果Dockerfile不是在当前目录,需要用-f去手动指定Dockerfile的位置。
经过安装后
运行镜像
docker run -it 镜像名字:TAG
执行
docker run -it centosjava8:1.0 /bin/bash
默认所在目录为设置的/usr/local
ifconfig命令正常使用
当前java版本为1.8.0_371
此时就可以确认mycentosjava8镜像构建成功