Riak 容器在挂载其数据卷时不启动

Riak container does not start when its data volume is mounted

以下命令运行良好,riak 服务按预期启动:

docker run --name=riak -d -p 8087:8087 -p 8098:8098 -v $(pwd)/schemas:/etc/riak/schema basho/riak-ts

本地schemas目录挂载成功,其中的sql文件被riak读取。但是,如果我尝试挂载 riak 的 datalog 目录,riak 服务不会启动并在 15 秒后超时:

docker run --name=riak -d -p 8087:8087 -p 8098:8098 -v $(pwd)/logs:/var/log/riak -v $(pwd)/schemas:/etc/riak/schema basho/riak-ts

docker logs riak 的输出:

+ /usr/sbin/riak start
riak failed to start within 15 seconds,
see the output of 'riak console' for more information.
If you want to wait longer, set the environment variable
WAIT_FOR_ERLANG to the number of seconds to wait.

为什么当 riak 的日志或数据目录挂载到本地目录时无法启动?

此问题与安装的 log 文件夹的目录所有者有关。文件夹 $GROUP$USER 预计为 riak,如下所示:

root@20e489124b9a:/var/log# ls -l
drwxr-xr-x 2 riak riak   4096 Jul 19 10:00 riak

但是你得到的数量是:

root@3546d261a465:/var/log# ls -l
drwxr-xr-x 2 root root   4096 Jul 19 09:58 riak

解决此问题的一种方法是在启动容器之前将目录所有权作为主机上的 riak 用户和组。我查看了 docker 图像中的 UID/GID (/etc/passwd),它们是:

riak:x:102:105:Riak user,,,:/var/lib/riak:/bin/bash

现在在启动容器之前更改主机目录的所有权为:

sudo chown 102:105 logs/
sudo chown 102:105 data/

这应该可以解决。最起码到现在。详情 here.