1.创建目录
在宿主机上创建三个目录 conf、data、log, 分别用来存放clickhouse的配置文件, 数据文件, 日志文件。进而实现Clickhouse数据持久化, 方便数据备份、迁移、恢复。
sudo mkdir -p /opt/servers/docker/clickhouse/conf
2.获取配置文件
- 启动一个临时容器
# 启动临时容器
docker run --rm -d --name=temp-clickhouse-server clickhouse/clickhouse-server:22.12
- 将临时容器中的配置文件拷贝到宿主机
# 将临时容器中的配置文件拷贝到宿主机
docker cp temp-clickhouse-server:/etc/clickhouse-server/users.xml /opt/servers/docker/clickhouse/conf/users.xml
docker cp temp-clickhouse-server:/etc/clickhouse-server/config.xml /opt/servers/docker/clickhouse/conf/config.xml
- 删除临时容器
# 删除临时容器
docker ps
[root@localhost conf]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e54630c49308 clickhouse/clickhouse-server:22.12 "/entrypoint.sh" 9 minutes ago Up 9 minutes 9000/tcp, 0.0.0.0:8123->8123/tcp, 9009/tcp clickhouse-server
docker stop e54630c49308
docker rm e54630c49308
3.配置文件修改
- 添加root用户, 打开users.xml文件, 把下面的内容复制到 <users></users>标签中
<root>
<password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</root>
如图:
其中8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92是加密后的密码, 使用如下命令生成:
echo -n "123456" | sha256sum | tr -d '-'
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c9
4.启动容器
sudo docker run -d --name=clickhouse-server \
-p 8123:8123 \
-e TZ=Asia/Shanghai \
--volume=/opt/servers/docker/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
--volume=/opt/servers/docker/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
clickhouse/clickhouse-server:22.12