通过Windows在Docker上通过Clickhouse安装主机上的数据目录权限

时间:2019-08-06 21:49:59

标签: windows powershell docker clickhouse

我与以下链接有类似的问题,但在Powershell中,因为我在Windows 10中运行Clickhouse Docker容器。

Data directory permissions on host for Clickhouse installation via docker

我的设置是这样运行的:

docker run -d -p 8124:8124 --name my_database --ulimit nofile=262144:262144 --volume=E:/:/var/lib/clickhouse yandex/clickhouse-server

E驱动器是Windows计算机上的驱动器之一。

运行合并树表创建时,我似乎无法访问/ var / lib / clickhouse / data。似乎没有为Clickhouse客户端提供足够的权限来访问此文件系统。错误看起来像这样:

Access to file denied: /var/lib/clickhouse/data/default/test_mergetree/tmp_insert_20150731_20150731_8_8_0

由于我处于Powershell状态,因此不确定如何解决此问题。我正在尝试访问文件系统以授予Powershell权限:

类似这样的东西

ICACLS "var/lib/clickhouse/data" /setowner "administrator"

但是随后由于clickhouse已被docker化,看来我找不到路径:

The system cannot find the path specified.

我必须运行docker compose吗?还是我走错路了?

尝试1

我尝试运行以下内容:

docker run --rm -i --entrypoint /bin/sh yandex/clickhouse-server -c id clickhouse

#got back:
uid=0(root) gid=0(root) groups=0(root)

#went into the system and ran
docker exec -it container-id bash 
chown -R 0:0 /var/lib/clickhouse

#got back
chown: cannot read directory '/var/lib/clickhouse/System Volume Information': Permission denied

2 个答案:

答案 0 :(得分:0)

原来这是Windows docker桌面上尚未修复的问题:

https://github.com/docker/for-win/issues/39

大量安装是必要的。但是我通过将磁盘映像更改为目标主机驱动器来解决了这个问题。在设置->高级->下,将虚拟硬盘映像更改为所需的驱动器,然后可以在该驱动器中进行写入。请注意,您仍然无法访问原始数据。

答案 1 :(得分:0)

您应该在Linux而不是Windows上运行docker和clickhouse。