我正在尝试按照此处的文档更新sebp/elkLogstash配置。我遇到了一种情况,我尝试挂载的主机文件正在作为容器中的目录挂载。
我发现了这个相关问题如何在卷中安装单个文件但是使用 PWD 运行的概念在 Windows 上对我不起作用,因为我收到以下错误:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: invalid reference format
我在 Windows 10(内部版本 16299.192)上运行 Docker
λ 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 实际上将其挂载为文件而不是目录。
如果您使用的是 Windows,则映射路径时会出现问题。我在 Windows 上使用 Git bash 终端,对我有用的命令就是这种格式。
docker run -d -p 5000:5000 -v "/${PWD}/etc/runtime_config.yml":/demand_forecast/etc/runtime_config.yml ....
docker run -d -p 5000:5000 -v "/${PWD}/etc/":/demand_forecast/etc/ ....
注意主机路径开头的 / ,这非常重要,否则会遇到错误。
这对我有用:
注意:此方法适用于带有 Docker Toolbox 和 VirtualBox 的 W10 家庭版。
概述:在本地计算机中创建一个文件夹,将其挂载为 Docker VM 中的共享文件夹,使用此共享文件夹作为 Docker 容器的绑定挂载。
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
它应该有效。
我找到了在 Windows 上绑定挂载的最简单方法。 使用这种格式: docker container run -d -p 8080:80 -v /{Drive}/{Folder(Optional)}:/{Container Path}/{Target} --name your-wish your-image。 示例: docker container run -d -p 8080:80 -v /d/Container:/usr/share/nginx/html --name my-website nginx
注意:我已经在 D 盘创建了一个“Container”文件夹