在linux映像上创建Dockerfile并装载azure文件共享

在linux映像上创建Dockerfile并装载azure文件共享,linux,azure,docker,drupal,Linux,Azure,Docker,Drupal,我正在尝试跟随,它展示了如何在LinuxVM中的文件夹上装载azure文件。唯一的区别是,我正在尝试将共享装载到使用Dockerfile创建的Linux容器上 虽然面临一些问题,但我理解需要以“特权”模式运行容器,以允许我运行mount命令。然而,到目前为止,我还没有成功,我找不到docker文件的引用做这样的事情 我正试图在Docker文件中运行此命令 RUN -it --privileged mount -t cifs filesharepath mountpath -o vers=3.

我正在尝试跟随,它展示了如何在LinuxVM中的文件夹上装载azure文件。唯一的区别是,我正在尝试将共享装载到使用Dockerfile创建的Linux容器上

虽然面临一些问题,但我理解需要以“特权”模式运行容器,以允许我运行mount命令。然而,到目前为止,我还没有成功,我找不到docker文件的引用做这样的事情

我正试图在Docker文件中运行此命令

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文件中实现类似的功能?如果是,有什么可能性

更新:


装载的目的特别是将存储目录的drupa文件装载到azure文件共享。例如:var/sites/default/files到azure文件存储。这可能需要针对特定于drupal实现的解决方案。如果有人有想法,这将是有益的

感觉我们需要在这里澄清一些事情:

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

  • 拥有docker文件后,您可以通过执行
    docker build…
    来构建本地docker映像。所以,只有当您无法找到需要运行的公共映像时,才需要Dockerfile

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

总结如下:

  • --mount
    命令可以在docker运行命令期间定义(从图像启动容器的基本且简单的方法)
  • 或者在docker compose文件中,如果您使用的是docker compose(通常是development env,以便在一个位置运行多个容器和配置)
  • 或者在部署yaml文件中,如果您打算使用kubernetes(通常用于生产,在生产中您需要自动工作)

为什么不直接使用卷?这个命令在dockerfile中没有任何意义,这个命令作为docker运行的一部分也有意义,也许?@CSharpRocks因为我想使用文件共享作为drupal网站的网络文件共享,从网站上传的文件需要进入文件共享(安装在drupal文件目录中)。我也不知道这在页面上意味着什么。“请注意,如果将共享装载到存在文件或目录的容器目录中,这些文件或目录将被装载遮挡,并且在容器运行时无法访问。”我想在容器中的文件夹上装载卷。