Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么从dockerfile构建映像时git克隆失败?_Docker - Fatal编程技术网

为什么从dockerfile构建映像时git克隆失败?

为什么从dockerfile构建映像时git克隆失败?,docker,Docker,当我从这个dockerfile构建时,我将克隆到红色文本的/tmp/ansible和othertest中(我假设这是一个错误)。然后,当我运行容器并仔细阅读时,我看到dockerfile中的所有步骤都正确构建,而git存储库则没有 我不知道我做错了什么,我认为这是一个简单的错误 构建dockerfile: FROM ansible/ansible:ubuntu1604 MAINTAINER myname RUN git clone http://github.com/ansible/ans

当我从这个dockerfile构建时,我将克隆到红色文本的/tmp/ansible和othertest中(我假设这是一个错误)。然后,当我运行容器并仔细阅读时,我看到dockerfile中的所有步骤都正确构建,而git存储库则没有

我不知道我做错了什么,我认为这是一个简单的错误

构建dockerfile:

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
sudo docker build --no-cache -f Dockerfile .
正在运行dockerfile:

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
sudo docker build --no-cache -f Dockerfile .
简单的回答是:

把你的文件放在
/tmp
以外的任何地方,一切都会很好

较长的答案是:

您的图像基于
ansible/ansible:ubuntu1604
图像。如果您通过docker inspect ansible/ansible:ubuntu1604检查此映像或查看,您会发现它包含许多卷装载。Dockerfile中的相关行是:

sudo docker run -I -t de32490234 /bin/bash
这意味着所有这些目录都是卷装入点,这意味着放入其中的任何数据都不会作为映像构建过程的一部分提交

查看您的
Dockerfile
,我有两条与上述内容无关的评论:

  • 您显式地设置了
    PATH
    环境变量,但忽略了包含
    /bin
    ,这将导致各种问题,例如:

    VOLUME /sys/fs/cgroup /run/lock /run /tmp
    
  • 您使用了两次
    WORKDIR
    ,但第一次(
    WORKDIR/tmp/ansible
    )实际上并没有做任何关心您所在目录的事情(您只是设置一些环境变量并将文件复制到
    /etc/ansible

    • 简短的回答:

      把你的文件放在
      /tmp
      以外的任何地方,一切都会很好

      较长的答案是:

      您的图像基于
      ansible/ansible:ubuntu1604
      图像。如果您通过docker inspect ansible/ansible:ubuntu1604检查此映像或查看,您会发现它包含许多卷装载。Dockerfile中的相关行是:

      sudo docker run -I -t de32490234 /bin/bash
      
      这意味着所有这些目录都是卷装入点,这意味着放入其中的任何数据都不会作为映像构建过程的一部分提交

      查看您的
      Dockerfile
      ,我有两条与上述内容无关的评论:

      • 您显式地设置了
        PATH
        环境变量,但忽略了包含
        /bin
        ,这将导致各种问题,例如:

        VOLUME /sys/fs/cgroup /run/lock /run /tmp
        
      • 您使用了两次
        WORKDIR
        ,但第一次(
        WORKDIR/tmp/ansible
        )实际上并没有做任何关心您所在目录的事情(您只是设置一些环境变量并将文件复制到
        /etc/ansible


      您能发布完整的Dockerfile(和家长)吗?你是如何运行这个容器的?另外,红色文本并不一定意味着错误(在这种情况下也不一定)。我已经更新了帖子。当我运行容器时,我可以看到我添加的ansible主机,等等。但是没有一个git存储库看起来是克隆的。你能发布完整的Dockerfile(和父文件)吗?你是如何运行这个容器的?另外,红色文本并不一定意味着错误(在这种情况下也不一定)。我已经更新了帖子。当我运行容器时,我可以看到我添加的ansible主机,等等。不过,没有一个git存储库看起来是克隆的。