创建Dockerfile并在Linux映像上挂载Azure文件共享

时间:2019-12-23 13:34:59

标签: linux azure docker

我正在尝试遵循Mount Azure File storage on Linux VMs using SMB,它显示了如何在Linux VM中的文件夹上安装Azure文件。唯一的区别是,我试图将共享装载到使用Dockerfile创建的Linux容器上。

尽管遇到几个问题,但我了解需要以“特权”模式运行容器以允许我运行mount命令。但是到目前为止,我一直没有成功,而且找不到执行此类操作的docker文件引用。

我正在尝试在Docker File中运行此命令。

RUN -it --privileged  mount -t cifs filesharepath mountpath  -o vers=3.0,username=username,password=password,dir_mode=0777,file_mode=0777,serverino

但是,我不断遇到错误字符-t,该错误不会在任何地方出现。

第一个问题是,是否可以通过Docker File实现类似的目标?如果是这样,有什么可能?

1 个答案:

答案 0 :(得分:0)

感觉像我们需要在此处进行澄清:

  • Dockerfile是放置所有设置说明的地方。就像您想要基于ubuntu的linux机器一样,还要安装几个软件包。然后Dockerfile是配置它的地方。它还允许配置暴露端口和默认启动项。期。将外部卷挂载到容器内部的某物上-在Dockerfile中没有任何意义,因为它不了解主机系统,也不应该。

  • 拥有Dockerfile之后,您可以执行docker build ....来构建本地Docker映像。因此,只有在找不到需要运行的公共映像时,才需要Dockerfile。

  • 一旦您有要运行的映像,就可以使用docker run选项在主机操作系统上执行--mount source=myvol2,target=/app,以将主机文件夹映射到容器内部文件夹。

总结:

    可以在docker run命令(从映像启动容器的基本且简单的方法)期间定义
  • --mount命令,
  • 或者如果您使用的是docker compose,则在docker-compose文件中(通常是env开发,以使多个容器在同一位置运行配置)。
  • 或者如果要使用kubernetes,则在部署yaml文件中使用(通常用于生产环境,在这种情况下您需要自动进行工作)。