使用Dockerfile构建镜像时repo源问题
当编写好Dockerfile后,我的Dockerfile内容如下:
FROM centos
MAINTAINER zzyy<zzyybs@126.com>
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-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
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
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash
执行docker build -t centos-java8:1.6 .进行镜像构建,但是执行到RUN yum -y install vim步骤时候出现错误,内容如下:
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was
0.482 14: curl#6 - “Could not resolve host: mirrorlist.centos.org; Unknown error”
ERROR: failed to solve: process “/bin/sh -c yum -y install vim” did not complete successfully: exit code: 1
这是因为Dockerfile构建镜像时执行的yum命令使用了本地repo源,这个repo是默认的。
解决办法:
网上很多都说指定Dockerfile中FROM centos为FROM centos:7来指明基础镜像centos版本即可解决,如果还是不行就systemctl restart docker重启docker服务。但是在我机子上都不行!!
为此,我想毕竟是repo源问题,就把repo源添加为阿里云aliyun的源试试看:
FROM centos
MAINTAINER zzyy<zzyybs@126.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
#添加阿里云的repo源
RUN mkdir -p /etc/yum.repos.d/backup && \
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/backup/CentOS-Base.repo && \
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#更新repo并安装vim
RUN yum clean all && yum makecache fast && \
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-8u171-linux-x64.tar.gz添加到容器中,安装包必须要和Dockerfile文件在同一位置
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
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
CMD echo $MYPATH
CMD echo "success--------------ok"
CMD /bin/bash
最后再次docker build -t构建一下镜像:
问题得到解决。
使用该镜像创建容器检查一下jdk、vim是否都安装:
docker run -it --name centos-java8 centos-java8:1.6 bash