Dockerfile文件+docker build命令方式创建Docker自定义镜像

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第1张图片

自定义镜像 mycentosjava8

自定义一个centos镜像,具备vim+ifconfig+jdk8的配置

拉取centos镜像

docker pull centos

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第2张图片

该默认镜像此时还没有vim、ifconfig和jdk的配置或功能

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第3张图片

jdk8的下载

地址:https://www.oracle.com/java/technologies/downloads/#java8

当前使用版本 jdk-8u371,根据跟人情况决定

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第4张图片

如果想要使用其他版本可访问https://mirrors.yangxingzhen.com/jdk/

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第5张图片

将压缩包传输到myfile文件下,注意当前使用的版本 jdk-8u371

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第6张图片

编写Dockerfile文件

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第7张图片

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的位置。

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第8张图片

经过安装后

image-20230721200822004

运行镜像

docker run -it 镜像名字:TAG

执行

docker run -it centosjava8:1.0 /bin/bash

image-20230721200851188

默认所在目录为设置的/usr/local

image-20230721200923565

ifconfig命令正常使用

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第9张图片

当前java版本为1.8.0_371

Dockerfile文件+docker build命令方式创建Docker自定义镜像_第10张图片

此时就可以确认mycentosjava8镜像构建成功

你可能感兴趣的:(docker,docker,容器)