无法理解的Docker错误

90次阅读
没有评论

问题描述

是一个初学者,正在尝试运行一个使用Python编写的Web服务器。他正在使用运行在Windows主机上的虚拟机中的Linux Debian。他已经将所需的文件夹从Windows主机挂载到虚拟机中。因此,当他在Windows中对文件夹进行更改时,虚拟机中也会反映出相同的更改。文件夹的名称是 “resultsdb”,其中包含所有的Python文件等。文件夹内容如下[在Debian虚拟机中]:

无法理解的Docker错误

命令 docker run hello-world 成功执行。他正在使用命令 docker build -t resultsdb .(最后带一个点)构建Docker镜像。但是他遇到了以下错误:

无法理解的Docker错误

他希望知道他哪里出错了。谢谢!

编辑:Dockerfile的内容如下:

###############################################################################
# 基础镜像
###############################################################################
FROM centos:6.9 as resultsdbbase

# 更换CentOS旧版本的软件源
RUN sed -i 's/^mirrorlist/#mirrorlist/' /etc/yum.repos.d/CentOS-Base.repo && \
    sed -i 's/^#baseurl/baseurl/' /etc/yum.repos.d/CentOS-Base.repo && \
    sed -i 's/mirror.centos.org/vault.centos.org/' /etc/yum.repos.d/CentOS-Base.repo

RUN yum -y update && \
    yum -y install epel-release && \
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

RUN yum -y update && \
    yum -y install \
        python \
        mysql-libs \
        openldap \
        freetype \
        libpng \
    && yum clean all

###############################################################################
# 构建镜像
###############################################################################
FROM resultsdbbase as resultsdbbuilder

RUN yum -y update && \
    yum -y install \
        gcc \
        gcc-gfortran \
        gcc-c++ \
        python-devel \
        python-virtualenv \
        mysql-devel \
        openldap-devel \
        freetype-devel \
        libpng-devel \
    && yum clean all

COPY install /tmp/install
RUN cd /tmp/install; bash install.sh

###############################################################################
# 运行时镜像
###############################################################################
FROM resultsdbbase

RUN useradd -u 1000 testresults

COPY --from=resultsdbbuilder /appenv /appenv

WORKDIR /app
ENV PATH /appenv/bin:$PATH

COPY app /app
RUN python setup.py develop && python -m compileall /app/testresults

COPY docker-entrypoint.sh /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]

USER testresults
EXPOSE 8080
CMD ["serve"]

有人提到Docker不再支持CentOS

解决方案

检查基础镜像版本

你遇到的问题可能与你选择的基础镜像版本有关。在你的Dockerfile中,你正在使用centos:6.9作为基础镜像。然而,CentOS 6 已经到达了其生命周期的终点(End of Life),不再得到官方支持和更新。这可能导致一些与依赖项、软件包和安全性相关的问题。考虑将基础镜像更新为较新版本的CentOS,或者考虑使用其他支持更好的Linux发行版作为基础。

更新Dockerfile

你的Dockerfile中有一些使用yum安装软件包的步骤。由于基础镜像版本的变更,一些软件包可能不再可用或需要更新。建议查阅相关文档以获取最新的安装步骤和依赖项。

寻找更多资源

如果你正在按照某个教程进行操作,考虑查找更更新的教程或资源。Docker生态系统和相关技术在不断演变,使用最新的教程可以帮助你避免一些已知的问题。

容器化最佳实践

当容器化应用程序时,确保你的Dockerfile和相关配置遵循最佳实践。这包括使用官方和受支持的基础镜像、使用适当的依赖版本、避免过多的层级嵌套等。

升级操作系统和工具

考虑将你的宿主机操作系统和Docker工具升级到最新版本。这有助于解决与兼容性和安全性相关的问题。

遵循社区建议

你在问题评论中提到了一些社区成员的建议,比如CentOS 6已经到达生命周期终点。考虑遵循这些建议,以及参考社区中其他人的类似问题和解决方案。

注意:以上解决方案建议可能需要根据实际情况进行调整,特别是当涉及到基础镜像版本、软件包依赖等方面时。

希望以上解决方案能够帮助你解决Docker问题。如果你需要进一步的帮助,请随时提问。

正文完