Docker挂载Nagios容器文件报错:路径类型不匹配问题求助
解决Docker挂载文件时类型不匹配的错误(manios/nagios镜像)
问题原因
报错核心是主机路径类型与容器目标路径类型不匹配:你尝试把主机上的$DOCKER_CONFIGS/conf/ssmtp/ssmtp.conf目录挂载到容器内的/etc/ssmtp/ssmtp.conf文件路径上,Docker不允许这种跨类型挂载操作。
解决方案
方案1:修复主机上的文件类型
先检查主机路径的类型:
ls -ld $DOCKER_CONFIGS/conf/ssmtp/ssmtp.conf- 如果输出以
drwx开头,说明这是个目录,需要修正。
- 如果输出以
删除错误的目录并创建正确的文件:
# 删除目录 rm -rf $DOCKER_CONFIGS/conf/ssmtp/ssmtp.conf # 从容器复制默认配置文件到主机 docker run --rm -it manios/nagios:latest cat /etc/ssmtp/ssmtp.conf > $DOCKER_CONFIGS/conf/ssmtp/ssmtp.conf你可以根据需求修改这个文件的内容。
重新执行原启动命令即可。
方案2:挂载整个目录替代单个文件
修改docker run命令中的挂载参数,把整个ssmtp目录挂载到容器对应路径:
DOCKER_CONFIGS=$(pwd) docker run --name nagios \ -v $DOCKER_CONFIGS/conf/etc/:/opt/nagios/etc/ \ -v $DOCKER_CONFIGS/conf/var:/opt/nagios/var/ \ -v $DOCKER_CONFIGS/conf/custom-plugins:/opt/Custom-Nagios-Plugins \ -v $DOCKER_CONFIGS/conf/ssmtp/:/etc/ssmtp/ \ # 修改为挂载整个目录 -p 0.0.0.0:8990:80 \ manios/nagios:latest
这种方式更灵活,后续如果需要修改ssmtp的其他配置文件,直接放到主机的$DOCKER_CONFIGS/conf/ssmtp/目录下即可。
内容的提问来源于stack exchange,提问作者BoomRamada
相关产品推荐
相关产品推荐

