之前启动成功过,后来启动失败之:未先停止容器而是直接删除,然后再次使用之前的索引数据库目录
如果出现如下错误信息:
FATAL: lock file "postmaster.pid" already exists Is anther postmaster (PID 32) running in data dicectory "/index-data"?
原因:由于之前未停止容器,导致数据库锁没有释放,如果确定容器都已经关闭,进入索引数据库文件夹删除 postmaster.pid
即可(如下图)。
如何挂载 SMB 网络共享文件夹到 Docker 容器?
- 注意,docker 中挂载网络共享文件夹,默认中文文件名会乱码,将导致程序生成索引出错甚至可能生成索引进度卡住不动,请尝试先调整挂载,让中文文件名不会乱码
- 先创建一个 volume, 将里面的 //192.168.1.200/folder1/ (网络共享路径), username, password 替换为自己的。
docker volume create --driver local --opt type=cifs --opt device=//192.168.1.200/folder1/ --opt o=addr=192.168.1.200,username=myShareUser,password=123456,file_mode=0655,dir_mode=0655 --name network-share-1
- 然后通过 -v 命令挂载到容器
docker run -it -p 7000:8000 -v D:\gh-indocker\5:/index-data -v network-share-1:/NetworkShare/1 guihaidata:latest-cpu
注
网络共享文件夹(SMB)volume 挂载后,容器启动失败
docker volume create ..... --name network-share-1
命令不论网络共享设置是否正确,都能成功执行,但是,docker run -v network-share-1:/NetworkShare/1
命令则会进行连接尝试,如果失败会导致容器无法启动。
此时,您需要:
- 先阅读理解容器启动失败时,给出的 volume 挂载错误信息
- 删除启动失败的容器 (命令:
docker rm 容器Id
) - 然后删除已经创建的 volume (命令:
docker volume rm network-share-1
) - 然后,检查并调整配置,重新创建 volume 和 容器。