如何实际绑定在Docker for Windows中挂载文件

时间:2018-01-08 23:19:29

标签: docker docker-volume

我尝试在此处更新sebp/elk之后的the documentation Logstash配置。我遇到了我试图挂载的主机文件作为容器中的目录挂载的情况。

我发现了这个相关问题How to mount a single file in a volume但是在Windows上运行PWD的概念对我没有用,因为我收到以下错误: C:\Program Files\Docker\Docker\Resources\bin\docker.exe: invalid reference format

我在Windows 10上运行Docker(Build 16299.192)

λ docker version
Client:
 Version:      17.09.1-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   19e2cf6
 Built:        Thu Dec  7 22:22:26 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.09.1-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   19e2cf6
 Built:        Thu Dec  7 22:28:28 2017
 OS/Arch:      linux/amd64
 Experimental: true

我的Docker运行命令是:

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it -v d:/docker/elk/logstash-snmp.conf:/etc/logstash/conf.d/logstash-snmp.conf --rm --name elk sebp/elk

我已经能够从该磁盘(SQL Server,Redis,Exist-DB)中运行具有持久存储的其他容器,但我不确定我是否遗漏了此内容。如何告诉Docker将其实际挂载为文件而不是目录。

2 个答案:

答案 0 :(得分:4)

这对我有用:

注意:此方法使用Docker Toolbox和VirtualBox解决W10 Home Edition。

概述:在本地计算机中创建一个文件夹,将其作为Docker VM中的共享文件夹挂载,将此共享文件夹用作Docker容器的bindmount。

  1. 使用docker-machine stop default
  2. 停止泊坞窗VM
  3. 打开VirtualBox,找到default转到Settings > Shared Folder
  4. 您会看到c/Users绑定到c:\Users
  5. 添加新的共享文件夹,记下分配的名称。我们将其命名为[local-shared]
  6. 退出Settings
  7. docker-machine start default
  8. 一旦开始,docker-machine ssh default
  9. sudo vi /mnt/sda1/var/lib/boot2docker/profile
  10. 附加以下内容:

      # create a directory in VM
      mkdir /home/docker/[foldername]
      # mount/map shared folder on localmachine to directory
      sudo moun -t vboxsf -o uid=1000,gid=50 [local-shared] /home/docker/[foldername] 
    
  11. 保存并退出ssh。

  12. docker-machine stop default
  13. docker-machine start default(或许docker-machine restart default
  14. 现在docker container run -d -p 1234:6789 -v /[local-shared]/sub-dir:/[container-dir] dockerImage2Run
  15. 它应该有用。

    参考:http://support.divio.com/local-development/docker/how-to-use-a-directory-outside-cusers-with-docker-toolbox-on-windowsdocker-for-windows

答案 1 :(得分:1)

如果您在Windows上,则映射路径时会出现问题。我在Windows上使用Git bash终端,适用于我的命令是这种格式。

  1. 要将名为runtime_config.yml的文件从主机复制到容器。主机路径是通过如下使用PWD给出的。容器路径是从根开始的。
<ContentControl Content="1">
   <ContentControl.ContentTemlate>
      ... Put DataTemplate here ...
   </ContentControl.ContentTemplate>
</ContentControl>
  1. 要将名为etc的目录从主机复制到容器。主机路径是通过如下使用PWD给出的。容器路径是从根开始的。
docker run -d -p 5000:5000 -v "/${PWD}/etc/runtime_config.yml":/demand_forecast/etc/runtime_config.yml ....

请注意主机路径开头的/,这一点非常重要,否则您将遇到错误。