docker - 将配置文件传递给 Docker 容器中的 mosquitto
问题描述
尝试在 Windows 上运行 masquitto Docker 容器。我有目录结构:
..
mosquitto
config
-- mosquitto.conf
data
log
我运行命令:
docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/config/mosquitto.conf -v /mosquitto/data -v /mosquitto/log eclipse-mosquitto
得到错误:
docker: Error response from daemon: source /var/lib/docker/overlay2/c54f317f73085489398e1b2c4ffbc85fbdb18073e8a0fa60f11a7f7222fbc49d/merged/mosquitto/config/mosquitto.conf is not directory.
See 'docker run --help'.
我做错了什么?
UPD
我试图提供主机上配置文件的完整路径:
docker run -it -p 1883:1883 -p 9001:9001 -v C:/docker_tst/eclipse-mosquitto/mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto
得到错误:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:370: starting container process caused: process_linux.go:459: container init caused: rootfs_linux.go:59: mounting "/run/desktop/mnt/host/c/docker_tst/eclipse-mosquitto/mosquitto.conf" to rootfs at "/var/lib/docker/overlay2/d9a7cbcb0f85b195dc5ee2d0999b3df8c84324552f6c45cf218876e9b96ed826/merged/mosquitto/config/mosquitto.conf" caused: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
PS C:\docker_tst\eclipse-mosquitto>
解决方案
从评论中,解决方案是根据这个答案提供单个安装文件的绝对路径。
在基于 Unix 的系统或适用于 Linux 的 Windows 子系统中,您可以通过运行以下命令来执行此操作:
docker run -v $PWD/filename:/path/in/container IMAGE_NAME
但是,根据这个答案,Windows 上的过程是不同的。
在 PowerShell 中,您可以运行Get-Location
或pwd
获取文件所在的当前目录并切换\
到/
(正斜杠)。对于此示例,解决方案是使用以下命令:
docker run -it -p 1883:1883 -p 9001:9001 -v C:/docker_tst/eclipse-mosquitto/mosquito/config/mosquito.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto
推荐阅读
- neural-network - 监督神经网络
- c++ - 在发布版本(O3)上调用“libucis.so”时“free():无效指针”,我的代码从未到达
- .net-core - 服务器端 Blazor App 能否运行 .Net Core 2.1
- java - 同时缩放和旋转纹理变换矩阵
- angular - 当我从 Firebase 获取数据时属性未定义
- javascript - 使用 Node 的字符串到 JSON 数组
- r - 将字典字符串分解为R中的多个变量
- asynchronous - 如何从 GCP 中的无状态 Spring Boot 服务跟踪异步长时间运行进程的状态?
- javascript - HTML 表单在表单上方打印警告文本但不会清除
- c - 取消引用自定义 mem 地址时的段错误 (C)