首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker构建中Docker构建失败的原因:‘/proc/1/map_files’:不允许操作

Docker构建中Docker构建失败的原因:‘/proc/1/map_files’:不允许操作
EN

Stack Overflow用户
提问于 2018-04-13 19:31:21
回答 1查看 1.4K关注 0票数 0

下面的指令是正确构建在MacOS码头引擎18.04,而同样的指令失败时,由一个詹金斯集装箱运行码头(码头码头,dind,盗梦空间)。为什么是错误的原因和解决办法是什么?

基于MacOS的本地码头建设

代码语言:javascript
复制
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

码头工人詹金斯建造

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2018-04-13 20:11:43

解决方案

  • 避免使用全局搜索find /,因为它涉及其他
    • 这些附加的dirs可能对停靠器生成说明中正在运行的停靠用户具有不同的rw权限,

解决上述问题的办法如下:

代码语言:javascript
复制
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中运行的停靠容器正在添加只有主机操作系统允许的进程。
  • 在运行命令find /时,该命令还扫描由dind进程拥有的dir /proc
  • 因此,在本地构建不会导致问题,因为Mac中的docker引擎具有权限,与dind相比不会泄漏额外的dind
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49823949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档