docker - 为什么Dockerfile可以构建但无法正常运行,即使它可以手动运行?

标签 docker dockerfile docker-volume

我一直在尝试运行很多小时。我一直在搜索docker文档,github仓库和其他内容,但由于某种原因我无法使其正常运行。
我的dockerfile:

FROM mattrayner/lamp:latest-1804

WORKDIR /app
RUN  wget -O /tmp/lwt.zip http://downloads.sourceforge.net/project/lwt/lwt_v_1_6_3.zip && \
     yes A | unzip /tmp/lwt.zip &&\
     rm /tmp/lwt.zip &&\
     mv connect_xampp.inc.php connect.inc.php
EXPOSE 80

CMD ["/run.sh"]
它可以正常构建,没有任何错误,但是当我运行该镜像时,/app目录中什么也没有出现,并且在浏览器中仅获得基本的Welcome to LAMP View 。
虽然,
如果我执行docker run -p "80:80" -it -v ${PWD}/app:/app mattrayner/lamp:latest-1804 /bin/bashcd /app,请复制并粘贴
wget -O /tmp/lwt.zip http://downloads.sourceforge.net/project/lwt/lwt_v_1_6_3.zip && \
     yes A | unzip /tmp/lwt.zip &&\
     rm /tmp/lwt.zip &&\
     mv connect_xampp.inc.php connect.inc.php
仍然不能正常工作但是如果我退出并运行相同的docker run命令,它仍然可以工作
Docker LAMP指令也指出要完全按照我的意愿去做:
FROM mattrayner/lamp:latest-1804

# Your custom commands

CMD ["/run.sh"]
当我按照这些说明进行操作时,我认为一切正常。
这里有什么收获?它可能与中间容器有关,但我无法理解(我不是行业的开发人员或开发人员,只是一个业余爱好者)。

最佳答案

发生这种情况是因为您正在执行以下操作:

  • 在Docker镜像的/app目录中下载文件(wget ...)。
  • 之后,安装卷时,您将覆盖$ ojid_code目录,其中包含$ PWD / app的内容。

  • 如果要在某些目录中安装执行/app的东西,请不要装入同一路径。
    如果您需要在同一路径中放置某些内容,则可以挂载一些具体文件,而不是整个目录,否则它将在创建容器时覆盖您在docker镜像中的内容。
    您可以在其他地方安装wget或将其下载到$ {PWD} / app中,然后进行安装。

    关于docker - 为什么Dockerfile可以构建但无法正常运行,即使它可以手动运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63476604/

    相关文章:

    docker - 保护Docker容器和/或卷免受意外删除

    docker - Hadoop在不使用IP的情况下无法访问数据节点

    docker - 如何用来自dockerfile的信息标记docker镜像?

    docker - 容器启动时,dockerfile中的RUN命令会执行吗?

    bash - 引用传递给docker入口点的第一个参数?

    mongodb - Docker撰写镜像文件夹

    kubernetes - 如何将 Skaffold 与 kubernetes 卷一起使用?

    bash - 如何使 ssh 与 -o StrictHostKeyChecking=no 在 docker 上运行,以便 ssh 主机工作而不退出脚本执行?

    docker - 使用官方 docker 镜像和 .monetdb 文件时,用户 'monetdb' 的凭据无效

    docker - Kubernetes YAML是否在同一个Pod中部署了多个镜像?