在OpenShift / Minishift中部署Docker镜像时的权限问题

这个问题涉及到本地版本的OpenShift Minishift。 我在MacOS上运行。

我试图从docker hub部署一个名为Mountebank的应用程序,这里是源代码:

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

DockerFile如下所示:

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映像。

当我在Minishift中安装映像并尝试启动一个窗格时,出现以下错误:

  /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) 

我认为这与我在Minishift运行的许可问题有关,但我不知道如何去改变它们。

任何帮助表示赞赏,

非常感谢

这可能是由于您试图运行一个需要以root身份运行的映像导致的。 您应该瞄准构build您​​的图像,以便它可以作为任何用户ID运行。

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

接下来是修改你的图像,所以可以运行任何用户ID每个指导方针在:

最后,如果由于某种原因无法修复映像,则可以将OpenShift集群pipe理员configuration为允许以root身份运行映像。

对于Minishift,请参阅anyuid add的详细信息,使其更容易一些。

好的,这是我如何解决我的问题。 我移动了要存储mb.pid和mb.log文件的位置。 它们最初被存储在根目录下,当Minishift中托pipe图像时会造成问题:

 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 –logfile文件存储在/ tmp /

Interesting Posts