一、创建挂载目录
# 创建目录
mkdir -p /data/clickhouse/{conf,log,data}
# 赋权
chmod -R 777 /data/clickhouse/{conf,log,data}
二、拉取ClickHouse镜像
这里我是直接从DockerHub里拉取的镜像
docker pull yandex/clickhouse-server:20.3.5.21
三、运行临时容器&修改配置
- 运行docker run 命令运行容器
docker run --rm -d --name=clickhouse-server \
> --ulimit nofile=262144:262144 \
> -p 8123:8123 -p 9009:9009 -p 9000:9000 \
> yandex/clickhouse-server:20.3.5.21
- 将容器里的配置文件复制到宿主机中
docker cp clickhouse-server:/etc/clickhouse-server/config.xml /home/clickhouse/conf/config.xml
docker cp clickhouse-server:/etc/clickhouse-server/users.xml /home/clickhouse/conf/users.xml
- 停止容器
docker stop clickhouse-server
- 创建账号
- 创建default账号密码
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-' #运行后会打印一个明文密码,一个密文密码 AvlyxvAz d00f0255508c11cfde40e8f84004449b269eb11ab272224cfecf1202a9abf6ac
- 创建root账号密码(方式同创建default)
- 创建default账号密码
- 修改user.xml配置文件
vim /home/clickhouse/conf/users.xml
找到yandex -> users -> default -> password,将password注释掉,在password节点位置创建一个password_sha256_hex节点。将刚才“创建default账号密码”环节得到密文填入到password_sha256_hex节点。
新增root账号,和default 同节点
<root>
<password_sha256_hex>35542ded44184b1b4b6cd621e052662578025b58b4187176a3ad2b9548c8356e</password_sha256_hex>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</root>
- 创建容器
docker run -d --name=clickhouse-server \
-p 8123:8123 -p 9009:9009 -p 9000:9000 \
--ulimit nofile=262144:262144 \
-v /home/clickhouse/data:/var/lib/clickhouse:rw \
-v /home/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
-v /home/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
-v /home/clickhouse/log:/var/log/clickhouse-server:rw \
yandex/clickhouse-server:20.3.5.21