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

标签 docker openshift minishift mountebank

这个问题涉及本地版本的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 中安装镜像并尝试启动 Pod 时,出现以下错误:

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

我假设这与我的 Pod 在 Minishift 中运行时的权限问题有关,但我不知道如何更改它们。

感谢任何帮助,

非常感谢

最佳答案

好的,这就是我解决问题的方法。我移动了 mb.pid 和 mb.log 文件的存储位置。它们最初存储在根目录下,当图像托管在 Minishift 中时,这会导致问题:

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/

关于docker - 在 OpenShift/Minishift 中部署 docker 镜像时的权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47437528/

相关文章:

amazon-web-services - Dockerfile中的AWS凭证

redis - 错误 :Could not connect to Redis at redis:6379: Name or service not known

kubernetes - 无法在 OCP 容器中创建多个线程

java - OpenShift 上的 OutOfMemoryError

java - Minishift - Pod 未启动

angular - Docker 容器不会重新加载 Angular 应用程序

java - Docker 容器中的 Wildfly 无法启动

docker - 将 Docker 镜像从公共(public)注册表导入 OpenShift

minishift - 执行 minishift start : connect: connection refused 时出错

openshift - 下载 OC 二进制版本时发生 Minishift 错误