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 的 data
或 log
目录,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.
以下命令运行良好,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 的 data
或 log
目录,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.