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/