You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

MacOS Docker Desktop中CouchDB启动失败问题求助

解决Docker Desktop(MacOS)上CouchDB启动的两个常见问题

我来帮你梳理并解决遇到的两个问题:

问题1:启动CouchDB容器后出现database_does_not_exist错误,无法访问5984端口

你看到的Erlang错误本质是CouchDB初始化时找不到_users系统数据库,这在CouchDB 3.x及以上版本很常见——因为这些版本默认启用了身份验证,必须设置初始管理员账号才能自动创建系统数据库。直接启动镜像没有配置账号的话,初始化流程会失败,导致服务无法正常监听端口。

解决步骤:

  1. 先清理出问题的旧容器:
docker stop test-couchdb && docker rm test-couchdb
  1. 启动容器时指定管理员账号和密码的环境变量,同时映射5984端口:
docker run -d --name test-couchdb \
  -e COUCHDB_USER=admin \
  -e COUCHDB_PASSWORD=your_secure_password \
  -p 5984:5984 \
  couchdb:latest
  1. 等待10秒左右,验证服务是否正常:
curl http://admin:your_secure_password@127.0.0.1:5984

正常情况下会返回类似这样的JSON:

{"couchdb":"Welcome","version":"3.3.2","git_sha":"0a4f9e826","uuid":"...","features":["access-ready","partitioned","pluggable-storage-engines","reshard","scheduler"],"vendor":{"name":"The Apache Software Foundation"}}

问题2:执行docker run -p 5984:5984 -d my2-couchdb时出现pull错误

这个错误是因为你把容器名当成了镜像名来使用。my2-couchdb是你之前创建的容器的名字,不是Docker镜像,所以Docker会尝试去Docker Hub拉取这个不存在的镜像,导致权限被拒。

解决方法:

如果想重新启动已有的my2-couchdb容器并确保端口映射正确,有两种方式:

  1. 重新创建容器(推荐):先删除旧容器,再用原镜像创建带端口映射和管理员账号的新容器:
docker stop my2-couchdb && docker rm my2-couchdb
docker run -d --name my2-couchdb \
  -e COUCHDB_USER=admin \
  -e COUCHDB_PASSWORD=your_secure_password \
  -p 5984:5984 \
  couchdb:latest
  1. 如果旧容器需要保留数据:先检查容器是否有数据卷挂载(如果没有的话数据会丢失),然后用docker inspect查看容器的镜像ID,再基于该镜像创建新容器:
# 获取容器使用的镜像ID
docker inspect my2-couchdb | grep -i "image"
# 用镜像ID启动新容器,替换下面的<IMAGE_ID>
docker run -d --name new-couchdb -p 5984:5984 <IMAGE_ID>

额外排查建议

  • 检查Docker Desktop的资源分配:打开Docker Desktop设置→Resources,确保给CouchDB分配了至少1GB内存和1个CPU核心,资源不足也会导致初始化失败。
  • 查看完整日志:用docker logs <container-name>查看容器的完整启动日志,能帮你定位是否有其他隐藏问题。

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

火山引擎 最新活动