为什么从dockerfile构建映像时git克隆失败?
当我从这个dockerfile构建时,我将克隆到红色文本的/tmp/ansible和othertest中(我假设这是一个错误)。然后,当我运行容器并仔细阅读时,我看到dockerfile中的所有步骤都正确构建,而git存储库则没有 我不知道我做错了什么,我认为这是一个简单的错误 构建dockerfile:为什么从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
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