Dockerfile:在/ tmp上运行ssh-agent时,权限被拒绝

所以我试图创build一个镜像,它将SSH私钥添加到/ tmp,在其上运行ssh-agent,执行git克隆,然后再次删除密钥。

这是我想要完成的想法

Dockerfile:

FROM node:4.2.4 MAINTAINER Me CMD ["/bin/bash"] ENV GIT_SSL_NO_VERIFY=1 ENV https_proxy="httpsproxy" ENV http_proxy="httpproxy" ENV no_proxy="exceptions" ADD projectfolder/key /tmp/ RUN ssh-agent /tmp WORKDIR /usr/src/app RUN git clone git@gitlab.private.address:something/target.git RUN rm /tmp/key WORKDIR /usr/src/app/target RUN npm install EXPOSE 3001 

现在问题在于构build过程。 我使用以下命令来构build:

 docker build -t samprog/targetimage:4.2.4 -f projectfolder/dockerfile . 

虽然“RUN ssh-agent / tmp”层不想合作,但直到“ADD projectfolder / key / tmp /”的层都可以正常工作。

错误代码:

 Step 9 : RUN ssh-agent /tmp/temp ---> Running in d2ed7c8870ae /tmp: Permission denied The command '/bin/sh -c ssh-agent /tmp' returned a non-zero code: 1 

有任何想法吗? 因为我认为这是一个权限问题,其中目录已经由父图像创build,我创build了一个/ tmp / temp并把键放在那里。 也不行,同样的错误。

我在SLES12 SP1上使用Docker版本1.10.3

我做的。 我做的是,我摆脱了ssh-agent。 我只是将我的docker-host的~/.ssh – 目录复制到映像的/root/.ssh中,并且工作正常。

不要使用~虽然,复制项目文件夹中的~/.ssh目录,然后在容器中的dockerfile。

最终dockerfile看起来如下所示:

 FROM node:4.2.4 MAINTAINER me CMD["/bin/bash"] ENV GIT_SSL_NO_VERIFY=1 ENV https_proxy="httpsproxy" ENV http_proxy="httpproxy" ENV no_proxy="exceptions" ADD projectfolder/.ssh /root/.ssh WORKDIR /usr/src/app RUN git clone git@gitlab.private.address:something/target.git RUN rm -r /root/.ssh WORKDIR /urs/src/app/target RUN npm set registry http://local-npm-registry RUN npm install EXPOSE 3001 

docker文件仍然需要提高效率和东西,但它的工作原理! find了!

图像现在必须被压扁,使用起来应该是安全的,尽pipe我们只在本地registry中使用它。