首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在OpenShift/Minishift中部署停靠映像时的权限问题

在OpenShift/Minishift中部署停靠映像时的权限问题
EN

Stack Overflow用户
提问于 2017-11-22 14:46:25
回答 2查看 2K关注 0票数 3

这个问题涉及到本地版本的OpenShift,迷你版。我在MacOS上跑。

我正在尝试从码头枢纽部署一个名为Mountebank的应用程序,这里是源代码:

https://hub.docker.com/r/andyrbell/mountebank/

DockerFile的内容如下:

代码语言:javascript
运行
复制
FROM alpine:3.6
EXPOSE 2525
CMD ["mb"]
ENV NODE_VERSION=6.10.3-r1

RUN apk update \
  && apk add --no-cache nodejs=${NODE_VERSION} \
  && apk add --no-cache nodejs-npm=${NODE_VERSION}

ENV MOUNTEBANK_VERSION=1.13.0

RUN npm install -g mountebank@${MOUNTEBANK_VERSION} --production \    
  && npm cache clean \
  && rm -rf /tmp/npm*

我可以在MacOS精细的本地容器中运行Mountebank映像。

当我将映像安装在微小的范围内并试图启动一个吊舱时,我会得到以下错误:

代码语言:javascript
运行
复制
    /usr/lib/node_modules/mountebank/node_modules/q/q.js:155 
    throw e; 
    ^ 
    Error: EACCES: permission denied, open 'mb.pid' 
    at Error (native) 
    at Object.fs.openSync (fs.js:641:18) 
    at Object.fs.writeFileSync (fs.js:1347:33) 
    at /usr/lib/node_modules/mountebank/bin/mb:176:16 
    at _fulfilled (/usr/lib/node_modules/mountebank/node_modules/q/q.js:854:54) 
    at self.promiseDispatch.done (/usr/lib/node_modules/mountebank/node_modules/q/q.js:883:30) 
    at Promise.promise.promiseDispatch (/usr/lib/node_modules/mountebank/node_modules/q/q.js:816:13) 
    at /usr/lib/node_modules/mountebank/node_modules/q/q.js:624:44 
    at runSingle (/usr/lib/node_modules/mountebank/node_modules/q/q.js:137:13) 
    at flush (/usr/lib/node_modules/mountebank/node_modules/q/q.js:125:13)

我假设这与我的吊舱在小排量下运行的许可问题有关,但我不知道如何改变它们。

任何帮助都是感激的,

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-08 13:35:31

好吧,我就是这样解决问题的。我移动了存储mb.pid和mb.log文件的位置。它们最初存储在根中,当映像托管在极小的范围内时,这会导致问题:

代码语言:javascript
运行
复制
FROM alpine:3.6

EXPOSE 2525

CMD mb --pidfile /tmp/mb.pid --logfile /tmp/mb.log

ENV NODE_VERSION=6.10.3-r1

RUN apk update \
&& apk add --no-cache nodejs=${NODE_VERSION} \
&& apk add --no-cache nodejs-npm=${NODE_VERSION}

ENV MOUNTEBANK_VERSION=1.13.0

RUN npm install -g mountebank@${MOUNTEBANK_VERSION} --production \
&& npm cache clean \
&& rm -rf /tmp/npm*

注意,--pidfile --日志文件将文件存储在/tmp/

票数 4
EN

Stack Overflow用户

发布于 2017-11-22 19:51:17

这很可能是由于您试图运行一个需要以root形式运行的映像。您应该以构造您的映像为目标,以便它可以作为任何用户ID运行。

首先,我建议尝试使用OpenShift提供的nodejs OpenShift构建器映像。

下一步是修改映像,以便在以下位置以任何用户ID的形式运行:

最后,如果您由于某种原因无法修复映像,您将作为OpenShift集群管理员配置该项目,以允许您以root的形式运行映像。

要获得更小的长度,请参阅anyuid添加的详细信息,它使这一点变得更容易一些。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47437528

复制
相关文章

相似问题

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