问题描述
是一个初学者,正在尝试运行一个使用Python编写的Web服务器。他正在使用运行在Windows主机上的虚拟机中的Linux Debian。他已经将所需的文件夹从Windows主机挂载到虚拟机中。因此,当他在Windows中对文件夹进行更改时,虚拟机中也会反映出相同的更改。文件夹的名称是 “resultsdb”,其中包含所有的Python文件等。文件夹内容如下[在Debian虚拟机中]:
命令 docker run hello-world
成功执行。他正在使用命令 docker build -t resultsdb .
(最后带一个点)构建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问题。如果你需要进一步的帮助,请随时提问。