下面的说明是在MacOS Docker Engine 18.04中正确构建的,而同样的指令在由运行Docker的Jenkins Container(Docker-in-Docker,dind,Inception)内置时失败...为什么出现错误的原因和什么是解决方法?
Step 12/16 : RUN find / -name "spring-cloud-config-server*.jar"
! -name "*sources*" -exec cp -t /tmp {} + &&
mkdir /runtime &&
mv /tmp/spring-cloud-config*.jar /runtime/config-service.jar &&
rm -f /*.jar
---> Using cache
Step 12/16 : RUN find / -name "spring-cloud-config-server*.jar"
! -name "*sources*" -exec cp -t /tmp {} + &&
mkdir /runtime &&
mv /tmp/spring-cloud-config*.jar /runtime/config-service.jar &&
rm -f /*.jar
---> Running in f64908a07aa1
find: ‘/proc/1/map_files’: Operation not permitted
find: ‘/proc/7/map_files’: Operation not permitted
The command '/bin/sh -c find / -name "spring-cloud-config-server*.jar"
! -name "*sources*" -exec cp -t /tmp {} + && mkdir /runtime &&
mv /tmp/spring-cloud-config*.jar /runtime/config-service.jar &&
rm -f /*.jar' returned a non-zero code: 1
script returned exit code 1
答案 0 :(得分:0)
find /
,因为它涉及其他目的
以上解决了上述问题:
RUN mkdir /runtime && \
find /tmp -name "spring-cloud-config-server*.jar" ! -name "*sources*" -exec cp -t /runtime {} + && \
mv /runtime/spring-cloud-config*.jar /runtime/config-service.jar && \
rm -f /tmp/*.jar
答案在于以下概念:
dind
中运行的docker容器正在添加仅由主机操作系统允许的进程。find /
时,该命令还会扫描由/proc
进程拥有的目录dind
。/proc
相比,不会泄漏额外的dind
。