一、创建挂载目录

# 创建目录
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)
  • 修改user.xml配置文件
vim /home/clickhouse/conf/users.xml

找到yandex -> users -> default -> password,将password注释掉,在password节点位置创建一个password_sha256_hex节点。将刚才“创建default账号密码”环节得到密文填入到password_sha256_hex节点。
image.png

新增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