我尝试在此处更新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将其实际挂载为文件而不是目录。
答案 0 :(得分:4)
这对我有用:
注意:此方法使用Docker Toolbox和VirtualBox解决W10 Home Edition。
概述:在本地计算机中创建一个文件夹,将其作为Docker VM中的共享文件夹挂载,将此共享文件夹用作Docker容器的bindmount。
docker-machine stop default
default
转到Settings > Shared Folder
c/Users
绑定到c:\Users
Settings
docker-machine start default
docker-machine ssh default
sudo vi /mnt/sda1/var/lib/boot2docker/profile
附加以下内容:
# 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]
保存并退出ssh。
docker-machine stop default
docker-machine start default
(或许docker-machine restart default
)docker container run -d -p 1234:6789 -v /[local-shared]/sub-dir:/[container-dir] dockerImage2Run
它应该有用。
答案 1 :(得分:1)
如果您在Windows上,则映射路径时会出现问题。我在Windows上使用Git bash终端,适用于我的命令是这种格式。
<ContentControl Content="1">
<ContentControl.ContentTemlate>
... Put DataTemplate here ...
</ContentControl.ContentTemplate>
</ContentControl>
docker run -d -p 5000:5000 -v "/${PWD}/etc/runtime_config.yml":/demand_forecast/etc/runtime_config.yml ....
请注意主机路径开头的/,这一点非常重要,否则您将遇到错误。