docker 安装clickhouse-server+clickhouse-client+Tabix

目录

 

1 系统环境

1.1 linux 版本

1.2 docker 版本

2 docker 安装clickhouse-server

2.1 查看docker.hub 上clickhouse-server

2.2 拉取 clickhouse-server镜像

2.3 准备配置的本地宿主机目录

2.4 查看将要使用的端口

2.5 拷贝clickhouse-server配置文件

2.6 修改用户配置

2.7 创建容器

2.8  进入容器测试clickhouse

3 docker 安装clickhouse-client 

3.1 查看docker.hub 上clickhouse-client

3.2 拉取yandex/clickhouse-client:20.3.21.2 docker镜像

3.3 启动clickhouse-client

3.4 配置clickhouse-client启动命令

4 docker 安装ClickHouse Web 界面 Tabix

4.1 查看docker.hub 上clickhouse-tabix-web-client

4.2 拉取镜像spoonest/clickhouse-tabix-web-client

4.3 创建clickhouse-tabix-web-client容器


1 系统环境

前提我已经准备好docker

1.1 linux 版本

[root@ds2 ~]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.8.2003 (Core)
Release:	7.8.2003
Codename:	Core

1.2 docker 版本

[root@ds2 ~]# docker -v
Docker version 1.13.1, build 64e9980/1.13.1

2 docker 安装clickhouse-server

2.1 查看docker.hub 上clickhouse-server

[root@ds2 ~]# docker search clickhouse-server
INDEX       NAME                                             DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/yandex/clickhouse-server               ClickHouse is an open-source column-orient...   256                  [OK]
docker.io   docker.io/agisoft/clickhouse-server                                                              0                    
docker.io   docker.io/altinity/clickhouse-server                                                             0                    
docker.io   docker.io/btmc/clickhouse-server                 yandex/clickhouse-server + clickhouse-clie...   0                    
docker.io   docker.io/btmc/clickhouse-server_v2                                                              0                    
docker.io   docker.io/davideberdin/clickhouse-server                                                         0  

可见docker.io/yandex/clickhouse-server获得的点赞最多,说明用的人多,就选这个镜像了

这里不选择最新的版本latest,选择上一个稳定版本yandex/clickhouse-server:20.3.21.2

2.2 拉取 clickhouse-server镜像

[root@ds2 ~]# docker pull yandex/clickhouse-server:20.3.21.2
Trying to pull repository docker.io/yandex/clickhouse-server ... 
20.3.21.2: Pulling from docker.io/yandex/clickhouse-server
171857c49d0f: Already exists 
419640447d26: Already exists 
61e52f862619: Already exists 
89efb9c881d4: Pull complete 
284b66b34b0e: Pull complete 
a3b83ee38fa7: Pull complete 
f7609780ee3b: Pull complete 
adadfa9cf73f: Pull complete 
95cb98063b9f: Pull complete 
ff8a7c48b73e: Pull complete 
Digest: sha256:e9c704ac6dc7f11e09b3c00d784625ac6f7c4fe9c9050c1d4b61b572f2bdd434
Status: Downloaded newer image for docker.io/yandex/clickhouse-server:20.3.21.2

查看镜像 

[root@ds2 ~]# docker images docker.io/yandex/clickhouse-server:20.3.21.2
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
docker.io/yandex/clickhouse-server   20.3.21.2           a653b487b34e        3 days ago          424 MB

2.3 准备配置的本地宿主机目录

[root@ds2 ~]# mkdir -p /data/module/clickhouse/data
[root@ds2 ~]# mkdir -p /data/module/clickhouse/conf
[root@ds2 ~]# mkdir -p /data/module/clickhouse/log
[root@ds2 ~]# 
[root@ds2 ~]# chmod -R 777 /data/module/clickhouse/data
[root@ds2 ~]# chmod -R 777 /data/module/clickhouse/conf
[root@ds2 ~]# chmod -R 777 /data/module/clickhouse/log

data放clickhouse数据,conf放配置文件,log放日志

2.4 查看将要使用的端口

查看dockerfile文件

https://hub.docker.com/r/yandex/clickhouse-server/dockerfile

EXPOSE 表示将要对外暴露的端口9000 8123 9009

查看端口是否被占用

[root@ds2 clickhouse]# netstat -apn | grep 9000
[root@ds2 clickhouse]# netstat -apn | grep 8123
[root@ds2 clickhouse]# netstat -apn | grep 9009
[root@ds2 clickhouse]# 

可见没有任何提示说明没有被占用,我可以使用

2.5 拷贝clickhouse-server配置文件

拷贝到本地宿主机用于作为模板自己来修改

① 创建临时容器

docker run --rm -d --name=liucf-clickhouse-server \
--ulimit nofile=262144:262144 \
-p 8123:8123 -p 9009:9009 -p 9000:9000 \
yandex/clickhouse-server:20.3.21.2

执行命令 

[root@ds2 clickhouse]# docker run --rm -d --name=liucf-clickhouse-server \
> --ulimit nofile=262144:262144 \
> -p 8123:8123 -p 9009:9009 -p 9000:9000 \
> yandex/clickhouse-server:20.3.21.2
507189ee29eb454865deb8f5f83b754679dcc5b304cadd44b7c631d0adb23c61
[root@ds2 clickhouse]# docker ps
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS                 PORTS                                                                    NAMES
507189ee29eb        yandex/clickhouse-server:20.3.21.2   "/entrypoint.sh"         9 seconds ago       Up 8 seconds           0.0.0.0:8123->8123/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:9009->9009/tcp   liucf-clickhouse-server

进入容器内部查看配置文件

[root@ds2 clickhouse]# docker exec -it liucf-clickhouse-server /bin/bash

root@507189ee29eb:/# ls -al /etc/clickhouse-server/
total 32
drwxr-xr-x. 1 root root    22 Nov  2 17:53 .
drwxr-xr-x. 1 root root    66 Nov  6 03:05 ..
drwxr-xr-x. 1 root root    39 Nov  2 17:53 config.d
-rw-r--r--. 1 root root 22610 Nov  2 13:20 config.xml
lrwxrwxrwx. 1 root root    41 Nov  2 17:52 preprocessed -> /var/lib/clickhouse//preprocessed_configs
drwxr-xr-x. 2 root root     6 Nov  2 17:52 users.d
-rw-r--r--. 1 root root  5190 Nov  2 13:20 users.xml

可见容器内部配置文件config.xml和users.xml在目录/etc/clickhouse-server/下面

日志目录:/var/log/clickhouse-server

数据目录:/var/lib/clickhouse

退出容器

root@507189ee29eb:/# exit
exit
[root@ds2 clickhouse]# 

② 拷贝容器内配置文件到宿主机

[root@ds2 conf]# docker cp liucf-clickhouse-server:/etc/clickhouse-server/config.xml /data/module/clickhouse/conf/config.xml
[root@ds2 conf]# docker cp liucf-clickhouse-server:/etc/clickhouse-server/users.xml /data/module/clickhouse/conf/users.xml

③ 停掉临时容器liucf-clickhouse-server

[root@ds2 conf]# docker stop liucf-clickhouse-server
liucf-clickhouse-server

查看是否还在

[root@ds2 conf]# docker ps 
CONTAINER ID        IMAGE                           COMMAND                  CREATED             STATUS                 PORTS                    NAMES
a2cdef2452d3        docker.io/amancevice/superset   "gunicorn superset..."   5 weeks ago         Up 5 weeks (healthy)   0.0.0.0:8088->8088/tcp   superset
[root@ds2 conf]# 

可见已经被停掉了,因为启动的时候使用了参数 --rm 表示一旦容器被stop就会被删除,即使使用docker ps -a 在已经停止的容器列表中也没有它了

2.6 修改用户配置

因为我们上面已经拷贝出来了配置文件users.xml现在可以修改/data/module/clickhouse/conf/users.xml

① 修改默认用户default登录密码

使用的是SHA256加密算法

格式是:

PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$MY_PASSWORD"; echo -n "$MY_PASSWORD" | sha256sum | tr -d '-'

比如我为default准备设置密码123456

执行如下

[root@ds2 conf]# PASSWORD=$(base64 < /dev/urandom | head -c8); echo "123456"; echo -n "123456" | sha256sum | tr -d '-'
123456
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

会输出明码和SHA256密码 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

/data/module/clickhouse/conf/users.xml
把default账号设为只读权限,并设置密码

a 设置只读

yandex-->users-->default-->profile 节点设为 readonly

<yandex>
    ......
   <users>
        <!-- If user name was not specified, 'default' user is used. -->
        <default>
            ......
            <profile>readonly</profile>
            ......

b 设置密码

注释掉 yandex-->users-->default-->password 节点

<yandex>
    ......
   <users>
        <!-- If user name was not specified, 'default' user is used. -->
        <default>
            ......
            <!-- <password></password> -->
            ......

新增  yandex-->users-->default-->password_sha256_hex 节点,填入生成的密码

<yandex>
    ......
   <users>
        <!-- If user name was not specified, 'default' user is used. -->
        <default>
            ......
            <!-- <password></password> -->
            <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
            ......

 

② 添加root用户并设置登录密码

生成root用户密码

[root@ds2 conf]# PASSWORD=$(base64 < /dev/urandom | head -c8); echo "888888"; echo -n "888888" | sha256sum | tr -d '-'
888888
92925488b28ab12584ac8fcaa8a27a0f497b2c62940c8f4fbc8ef19ebc87c43e  

在default用户标签的同级标签下面添加root用户标签

<users>
        </default> 
           ......       
        </default>
		<root>
            <password_sha256_hex>92925488b28ab12584ac8fcaa8a27a0f497b2c62940c8f4fbc8ef19ebc87c43e</password_sha256_hex>
	        <networks incl="networks" replace="replace">
		        <ip>::/0</ip>
	        </networks>
	        <profile>default</profile>
	        <quota>default</quota>
        </root>
</users>

2.7 创建容器

执行命令:
[root@ds2 log]# docker run -d --name=liucf-clickhouse-server \
> -p 8123:8123 -p 9009:9009 -p 9000:9000 \
> --ulimit nofile=262144:262144 \
> -v /data/module/clickhouse/data:/var/lib/clickhouse:rw \
> -v /data/module/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
> -v /data/module/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
> -v /data/module/clickhouse/log:/var/log/clickhouse-server:rw \
> --privileged=true \
> yandex/clickhouse-server:20.3.21.2
b64d9704419c1273ca344f1f6a98881b32bf5e98d0d52c036aa1a4ff11e8031e
查看容器创建是否成功
[root@ds2 log]# docker ps
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS                 PORTS                                                                    NAMES
b64d9704419c        yandex/clickhouse-server:20.3.21.2   "/entrypoint.sh"         3 seconds ago       Up 3 seconds           0.0.0.0:8123->8123/tcp, 0.0.0.0:9000->9000/tcp, 0.0.0.0:9009->9009/tcp   liucf-clickhouse-server
a2cdef2452d3        docker.io/amancevice/superset        "gunicorn superset..."   5 weeks ago         Up 5 weeks (healthy)   0.0.0.0:8088->8088/tcp                                                   superset
[root@ds2 log]# 

docker 相关命令参数请自己百度

注意:启动的时候一定加--privileged=true 否则就会有权限问题,类似于报错如下:

[root@ds2 log]# docker logs --tail='100' liucf-clickhouse-server
chown: cannot read directory '/var/lib/clickhouse/': Permission denied
chown: cannot read directory '/var/log/clickhouse-server': Permission denied
chown: cannot read directory '/var/log/clickhouse-server': Permission denied
mkdir: cannot create directory ‘/var/lib/clickhouse/tmp/’: Permission denied
Couldn't create necessary directory: /var/lib/clickhouse/tmp/

2.8  进入容器测试clickhouse

① 进入容器

[root@ds2 log]# docker exec -it liucf-clickhouse-server /bin/bash
root@b64d9704419c:/# 

② 启动容器内的clickhouse-client

注意我们已经设置了密码

root@b64d9704419c:/# clickhouse-client --password 123456
root@b64d9704419c:/# clickhouse-client --password 123456
ClickHouse client version 20.3.21.2 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.3.21 revision 54433.
b64d9704419c :)

③ 查看表

b64d9704419c :) show databases;

SHOW DATABASES

┌─name────┐
│ default │
│ system  │
└─────────┘

2 rows in set. Elapsed: 0.002 sec. 

b64d9704419c :) use system;

USE system

Ok.

0 rows in set. Elapsed: 0.001 sec. 

b64d9704419c :) show tables;

SHOW TABLES

┌─name───────────────────────────┐
│ aggregate_function_combinators │
│ asynchronous_metrics           │
│ build_options                  │
│ clusters                       │
│ collations                     │
│ columns                        │
│ contributors                   │
│ data_type_families             │
│ databases                      │
│ detached_parts                 │
│ dictionaries                   │
│ disks                          │
│ events                         │
│ formats                        │
│ functions                      │
│ graphite_retentions            │
│ macros                         │
│ merge_tree_settings            │
│ merges                         │
│ metric_log                     │
│ metrics                        │
│ models                         │
│ mutations                      │
│ numbers                        │
│ numbers_mt                     │
│ one                            │
│ parts                          │
│ parts_columns                  │
│ processes                      │
│ quota_usage                    │
│ quotas                         │
│ replicas                       │
│ replication_queue              │
│ row_policies                   │
│ settings                       │
│ stack_trace                    │
│ storage_policies               │
│ table_engines                  │
│ table_functions                │
│ tables                         │
│ zeros                          │
│ zeros_mt                       │
└────────────────────────────────┘

42 rows in set. Elapsed: 0.002 sec. 

b64d9704419c :) 

可见clickhouse-server 安装完成

3 docker 安装clickhouse-client 

3.1 查看docker.hub 上clickhouse-client

[root@ds2 log]# docker search clickhouse-client
INDEX       NAME                                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/yandex/clickhouse-client                Native client for the Clickhouse database ...   69                   [OK]
docker.io   docker.io/4010/clickhouse-client                                                                  0                    
docker.io   docker.io/btmc/clickhouse-server                  yandex/clickhouse-server + clickhouse-clie...   0                    
docker.io   docker.io/faunus/clickhouse-client                                                                0                    
docker.io   docker.io/fx19880617/clickhouse-client                                                            0                    
docker.io   docker.io/gdarklighter/ansible-clickhouseclient   Clickhouse-client with ansible on Ubuntu 1...   0                    
docker.io   docker.io/iskovik/clickhouse-client                                                               0                    
docker.io   docker.io/namcx/clickhouse-client                                                                 0                    
docker.io   docker.io/newnius/clickhouse-client               ClickHouse Client                               0                    [OK]
docker.io   docker.io/nyaa/clickhouse-client                  Native client for the Clickhouse database ...   0                    
docker.io   docker.io/robodockdev/clickhouse-client                                                           0                    
docker.io   docker.io/samsheff/clickhouse-client              To Run: docker run -it --rm samsheff/click...   0                    
docker.io   docker.io/slpcat/clickhouse-client                                                                0                    
docker.io   docker.io/sunsingerus/clickhouse-client                                                           0                    
docker.io   docker.io/vvklotus/clickhouse-client                                                              0                    
docker.io   docker.io/yjhmelody/clickhouse-client                                                             0                    
[root@ds2 log]# 

可见docker.io/yandex/clickhouse-client获得的点赞最多,说明用的人多,就选这个镜像了 

因为clickhouse-server我选的是20.3.21.2版本的这里clickhouse-client 我也选了相同版本的

3.2 拉取yandex/clickhouse-client:20.3.21.2 docker镜像

[root@ds2 ~]# docker pull yandex/clickhouse-client:20.3.21.2
Trying to pull repository docker.io/yandex/clickhouse-client ... 
20.3.21.2: Pulling from docker.io/yandex/clickhouse-client
171857c49d0f: Already exists 
419640447d26: Already exists 
61e52f862619: Already exists 
a9384c0a7a18: Pull complete 
5368d0da1703: Pull complete 
Digest: sha256:b047f663bd326294bc40a76414df33586a7c1c71c926cb21e3164e11e88f0e46
Status: Downloaded newer image for docker.io/yandex/clickhouse-client:20.3.21.2
[root@ds2 log]# docker images yandex/clickhouse-client:20.3.21.2
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
docker.io/yandex/clickhouse-client   20.3.21.2           7885e0410407        3 days ago          416 MB

3.3 启动clickhouse-client

[root@ds2 bin]# docker run --name liucf-clickhouse-client  -it --rm --link liucf-clickhouse-server:clickhouse-server-alias docker.io/yandex/clickhouse-client:20.3.21.2 --host 192.168.12.14 --port 9000 --user root --password 888888
ClickHouse client version 20.3.21.2 (official build).
Connecting to 192.168.12.14:9000 as user root.
Connected to ClickHouse server version 20.3.21 revision 54433.
b64d9704419c :) 
b64d9704419c :) show databases;

SHOW DATABASES

┌─name────┐
│ default │
│ system  │
└─────────┘

2 rows in set. Elapsed: 0.002 sec. 

b64d9704419c :) 

可见启动成功可以使用

因为客户端每次使用完不用一直常驻所以这里使用--rm 参数 在使用exit 命令退出liucf-clickhouse-client容器后就会直接删除这个容器,下次启动重新创建就可以了

注意:这里使用了 docker --link 命令,可以让一个容器和另一个容器很方便的连接起来,其参数部分的liucf-clickhouse-server表示要连接的容器真是名称,clickhouse-server-alias是要连接的容器的别名。

3.4 配置clickhouse-client启动命令

这里把3.3 里的命令 放在一个文件中(比如文件名叫docker-clickhouse-client),chmod +x ,再放到/usr/local/bin下,就能直接使用了

[root@ds2 bin]# vim docker-clickhouse-client

docker run --name liucf-clickhouse-client  -it --rm --link liucf-clickhouse-server:clickhouse-server-alias docker.io/yandex/clickhouse-client:20.3.21.2 --host 192.168.12.14 --port 9000 --user root --password 888888

[root@ds2 bin]# chmod 755 docker-clickhouse-client 

使用启动命令

[root@ds2 bin]# docker-clickhouse-client
ClickHouse client version 20.3.21.2 (official build).
Connecting to 192.168.12.14:9000 as user root.
Connected to ClickHouse server version 20.3.21 revision 54433.

b64d9704419c :) 
b64d9704419c :) show databases;

SHOW DATABASES

┌─name────┐
│ default │
│ system  │
└─────────┘

2 rows in set. Elapsed: 0.002 sec. 

b64d9704419c :) 

可见每次都可以使用docker-clickhouse-client启动liucf-clickhouse-client容器进行启动clickhouse客户端

4 docker 安装ClickHouse Web 界面 Tabix

4.1 查看docker.hub 上clickhouse-tabix-web-client

这里直接在官网页面查看

我这里选着下载次数和点赞最多的spoonest/clickhouse-tabix-web-client镜像

可见latest版本也是2年前更新的说明这个镜像很久没更新了,够稳定,所以这里就使用它了,

4.2 拉取镜像spoonest/clickhouse-tabix-web-client

[root@ds2 bin]# docker pull spoonest/clickhouse-tabix-web-client:latest

 查看

[root@ds2 bin]# docker images spoonest/clickhouse-tabix-web-client:latest
REPOSITORY                                       TAG                 IMAGE ID            CREATED             SIZE
docker.io/spoonest/clickhouse-tabix-web-client   latest              e872c1a905d9        2 years ago         245 MB

4.3 创建clickhouse-tabix-web-client容器

docker run --name liucf-clickhouse-tabix-web-client -d -p 7070:80 -e user='root' -e password='888888' spoonest/clickhouse-tabix-web-client:lates

注意:docker run -e 表示设置环境变量

执行命令: 

[root@ds2 bin]# docker run --name liucf-clickhouse-tabix-web-client -d -p 7070:80 -e user='root' -e password='888888' spoonest/clickhouse-tabix-web-client:latest
e9b936a1862b7a7a1d64d200b79302432e458afcce90906fa1faa27ead9cd41c
[root@ds2 bin]# docker ps
CONTAINER ID        IMAGE                                         COMMAND                  CREATED             STATUS                 PORTS                                                                    NAMES
e9b936a1862b        spoonest/clickhouse-tabix-web-client:latest   "/bin/sh -c ./star..."   4 seconds ago       Up 3 seconds           0.0.0.0:7070->80/tcp                                                     liucf-clickhouse-tabix-web-client

4.4 页面验证

http://192.168.12.14:7070

登录后

可见能够使用了

注意:TABIX 查询的时候语句后面不能使用 “;” 分号否则报语法错误

Code: 62, e.displayText() = DB::Exception: Syntax error (Multi-statements are not allowed): failed at position 50 (end of query) (line 1, col 50): ;

 FORMAT JSON .  (version 20.3.21.2 (official build))

到此 docker 安装clickhouse-server+clickhouse-client+Tabix全部完成。

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Docker Desktop是一个用于在Windows和Mac上运行Docker的应用程序。它提供了一个用户友好的界面,可以轻松地管理和运行Docker容器。WSL(Windows Subsystem for Linux)是Windows 10中的一个功能,它允许用户在Windows上运行Linux发行版。 如果在安装Docker Desktop时遇到了"docker+desktop-unexpected+wsl"错误,可能是由于WSL未正确配置或启用所致。以下是解决此问题的步骤: 1. 确保已安装WSL:在Windows 10上,打开PowerShell或命令提示符,并运行以下命令来检查WSL是否已安装: ```shell wsl --list --verbose ``` 如果没有任何输出或显示"WSL 2 is not installed",则需要安装WSL。可以按照Microsoft的官方文档进行安装:https://docs.microsoft.com/en-us/windows/wsl/install-win10 2. 启用WSL 2:在安装WSL后,需要将WSL 2设置为默认版本。打开PowerShell或命令提示符,并运行以下命令: ```shell wsl --set-default-version 2 ``` 3. 安装Linux发行版:在WSL 2中运行Docker需要安装一个Linux发行版。可以从Microsoft Store中选择一个喜欢的发行版,例如Ubuntu、Debian等。打开Microsoft Store,搜索并安装所选的发行版。 4. 配置Docker Desktop:打开Docker Desktop应用程序,转到设置(Settings)-> WSL Integration。确保已启用所需的Linux发行版,并将其与Docker Desktop关联起来。 完成上述步骤后,应该能够成功安装和运行Docker Desktop,并在WSL 2中使用Docker

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值