挂载错误(13):权限被拒绝-在docker / kubernetes中

时间:2018-08-03 19:25:47

标签: docker kubernetes mount cifs windows-share

我对kubernetes和docker还是很陌生,所以请耐心等待我。

我正在尝试在docker中包含的linux中挂载Windows共享,这是一个kubernetes容器。

我设法在kubernetes和docker中获得了所有正确的权限,以手动安装共享。但是,我需要通过Dockerfile来完成此操作,因为它需要自动化。

这是我的Dockerfile:

WORKDIR /app
COPY ./start-script.sh ./start-script.sh

RUN apt-get update && apt-get install -y cifs-utils
RUN mkdir Windows-Share
# RUN mount.cifs <Window share folder> /app/Windows-Share/ -o username=<username>,password=<password>,domain=<domain>

ENTRYPOINT ["bash", "./start-script.sh"]

这是我的start-script.sh:

#!/bin/bash
mount.cifs <Window share folder> /app/Windows-Share/ -o username=<username>,password=<password>,domain=<domain>
exec dotnet <dotnet dll>

现在应该注意,我无权访问任何docker命令,它们都由kubernetes处理。 kubernetes创建pod后,日志将显示:

  

安装错误(13):权限被拒绝

     

请参阅mount.cifs(8)手册页(例如man mount.cifs)

这使我感到困惑,因为如果我登录到kubernetes容器并手动运行mount命令,它将很好地安装。我想念什么?

2 个答案:

答案 0 :(得分:1)

正确的方法往往是在容器外部提供适当的存储设置,而不是尝试在容器中装入东西。对于Kubernetes而言,这意味着要设置适当的Volumes,然后将其安装在您的pod规范中。

没有现成的SMB / CIFS卷驱动程序,但是看起来像Microsoft publishes Kubernetes storage plugins可以提供帮助。

答案 1 :(得分:0)

我遇到了同样的问题。 Mount 在服务器本身上运行,将图像作为 docker 容器运行,而不是将图像作为 kubernetes 部署运行。就我而言,它有助于为具有特权和一些 linux 功能的部署添加安全上下文:

securityContext:
        capabilities:
          add:
            - SYS_ADMIN
            - DAC_READ_SEARCH
            - NET_BIND_SERVICE
        privileged: true