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中使用它。
- 在Docker环境中运行Symfony时的文件夹权限
- 从docker nginx / php-fpm安装在本地卷(Mac)上的Laravel无法写入会话文件
- Docker容器中的用户和文件权限configuration(docker-compose版本3)
- 在Docker容器中更改/ proc / sys / kernel / core_pattern文件
- 在Python的dockerfile CHMOD
- Nginx的泊坞窗(13:权限被拒绝)logging请求挂载卷
- 在docker集装箱的贝加尔许可问题
- Docker:打开/certs/domain.crt:权限被拒绝
- Artifactory允许匿名访问泊坞窗拉