You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Docker Ghost容器添加额外绑定挂载?解决挂载报错

解决Docker挂载Ghost配置文件的类型不匹配错误

问题根源

你遇到的报错核心是挂载类型不匹配:你试图将宿主机上的目录/home/ubuntu/config6挂载到容器内的文件路径/var/lib/ghost/config.production.json,Docker严格禁止这种“目录→文件”的跨类型挂载,因此抛出了not a directory的错误。

另外,你的需求是让容器创建config.production.json并挂载到宿主机的$(pwd)/testFolder/config.production.json(当前不存在),但直接挂载不存在的文件路径时,Docker会默认创建一个目录而非文件,这也会导致后续的挂载冲突。


正确解决方案

要实现你的需求,需要分两步操作:

1. 先在宿主机创建空的配置文件(或复制容器默认配置)

Docker挂载文件时,要求宿主机的目标路径必须是文件(而非目录)。因此你需要先手动创建空文件,或者从容器中复制默认配置文件:

方式一:创建空文件
# 先确保testFolder目录存在
mkdir -p $(pwd)/testFolder
# 创建空的config.production.json文件
touch $(pwd)/testFolder/config.production.json
方式二:复制容器默认配置(推荐,直接获得可用的默认配置)

如果你想直接使用Ghost的默认配置文件,可以临时启动一个容器并复制出来:

# 启动临时Ghost容器
sudo docker run --rm -d --name temp-ghost ghost:latest
# 等待容器启动后,复制默认配置到宿主机目标路径
sudo docker cp temp-ghost:/var/lib/ghost/config.production.json $(pwd)/testFolder/config.production.json
# 停止临时容器
sudo docker stop temp-ghost

2. 执行正确的Docker Run命令

确保挂载的是文件到文件,同时修正你之前命令里的端口映射错误(Ghost默认容器端口是2368,你之前写的2376是笔误):

sudo docker run -d \
  -e url=http://example.com \
  --name myBlog6 \
  -p 3006:2368 \
  -v "$(pwd)/content6":/var/lib/ghost/content \
  -v "$(pwd)/testFolder/config.production.json":/var/lib/ghost/config.production.json \
  ghost:latest

验证效果

容器启动后,你可以查看宿主机的$(pwd)/testFolder/config.production.json文件,会发现它已经被容器的配置内容填充(如果用了方式二),或者被容器写入了默认配置(如果用了方式一)。后续修改这个文件后,重启容器即可生效。

内容的提问来源于stack exchange,提问作者Arturo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 06:43:16