gpt4 book ai didi

docker - 从dockerfile构建镜像时,为什么git clone失败?

转载 作者:行者123 更新时间:2023-12-02 18:49:33 84 4
gpt4 key购买 nike

FROM ansible/ansible:ubuntu1604

MAINTAINER myname


RUN git clone http://github.com/ansible/ansible.git /tmp/ansible
RUN git clone http://github.com/othertest.git /tmp/othertest
WORKDIR /tmp/ansible
ENV PATH /tmp/ansible/bin:/sbin:/usr/sbin:/usr/bin:bin
ENV PYTHONPATH /tmp/ansible/lib:$PYTHON_PATH
ADD inventory /etc/ansible/hosts
WORKDIR /tmp/
EXPOSE 8888

当我从该dockerfile构建时,我将克隆到/ tmp / ansible和othertest中为红色文本(我认为是错误)。然后,当我运行容器并仔细研究时,我发现从dockerfile中执行的所有步骤均正确构建,而不是缺少git存储库。

我不知道自己在做什么错,我认为这是一个简单的错误。

构建dockerfile:
sudo docker build --no-cache -f Dockerfile .

运行dockerfile:
sudo docker run -I -t de32490234 /bin/bash

最佳答案

简短的答案:

将文件放在/tmp之外的其他任何地方,一切应该正常。

更长的答案:

您将图像基于ansible/ansible:ubuntu1604图像。如果通过docker inspect ansible/ansible:ubuntu1604检查此镜像或查看Dockerfile from which it was built,则会发现它包含许多卷安装。 Dockerfile中的相关行是:

VOLUME /sys/fs/cgroup /run/lock /run /tmp

这意味着所有这些目录都是卷挂载点,这意味着在镜像构建过程中,放入其中的所有数据将 而不是提交。

查看您的 Dockerfile,我有两条与以上无关的评论:
  • 您显式设置了PATH环境变量,但忽略了/bin,这将导致各种问题,例如:
    $ docker run -it --rm bash
    docker: Error response from daemon: oci runtime error: exec: "bash": executable file not found in $PATH.
  • 您使用了WORKDIR两次,但是第一次(WORKDIR /tmp/ansible)实际上并没有执行任何操作来关心您所在的目录(您只是在设置一些环境变量并将文件复制到/etc/ansible)。
  • 关于docker - 从dockerfile构建镜像时,为什么git clone失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40273910/

    84 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com