0
点赞
收藏
分享

微信扫一扫

Docker部署clickhouse


clickhouse 部署

前面我们在初识篇里讲了介绍了clickhouse ,以及clickhouse的特性,这一节我们部署一下clickhouse,部署完成之后我们再来体验一下clickhouse。

Docker部署clickhouse

拉取镜像

docker pull yandex/clickhouse-server
docker pull yandex/clickhouse-client

我们不需要在服务器端部署​​clickhouse-client​​​,所以我们在客户端机器上执行​​docker pull yandex/clickhouse-client​

如果拉取镜像太慢,则设置一下国内的镜像源

{
"debug": true,
"experimental": true,
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}

  1. https://registry.docker-cn.com 官方的
  2. http://hub-mirror.c.163.com 网易的

启动server端

直接启动

docker run -d -p 8123:8123 -p 9000:9000 --name clickhouse yandex/clickhouse-server

我们可以看到我们的容器已经在运行中了

Docker部署clickhouse_xml

需要注意的是,如果直接启动,这样的话我们的数据文件当容器销毁的时候就没有了所以我们可以在本地创建一个数据文件目录,然后挂在上去

## 创建数据文件目录
mkdir /Users/liuwenqiang/workspace/tmp/clickhouse/db
## 启动,需要注意的是我们需要停止并且删除前面的容器
docker run -d -p 8123:8123 -p 9000:9000 --name clickhouse --volume=/Users/liuwenqiang/workspace/tmp/clickhouse/db:/var/lib/clickhouse yandex/clickhouse-server

启动clickhouse-client

这里我们在另外一台机器上部署​​clickhouse-client​​​, 因为我们的​​clickhouse-server​​​一般是部署在服务器端的,我们的​​clickhouse-client​​​ 是部署在客户端的,所以我们先拉去镜像​​docker pull yandex/clickhouse-client​

Docker部署clickhouse_xml_02

docker run --name ck-client -it --rm --link clickhouse yandex/clickhouse-client --host 192.168.1.103  --port 9000 --user root --password www1234

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

docker --link 主要解决了以下两个问题

  1. link可以通过容器名互相通信,容器间共享环境变量。
  2. link主要用来解决两个容器通过ip地址连接时​​容器ip地址​​会变的问题

这里我们主要就是要通信,因为我们要使用客户端去服务器端查数据,​​--link ​​ 后面就是我们要连接的容器的名称

这里有点麻烦的是要做docker 跨主机通信,如果你觉得麻烦的话或者单纯学习clickhouse的话,就在同一台机器上部署也可以

Docker部署clickhouse_xml_03

连接进去后我们创建了一个数据库​​bzhan​

使用dbeaver连接

下面我们使用dbeaver进行连接,如下所示步骤

Docker部署clickhouse_clickhouse_04

需要注意的是如果你是第一次连接clickhouse,需要下载一些驱动文件,这里都是自动下载的你直接点击确定就行,然后我们输入相关信即可

Docker部署clickhouse_docker_05

需要注意的是由于我们的clickhouse目前并没有设置用户名密码,所以这里我们不需要填写,然后点击测试连接,测试通过则点击完成即可

Docker部署clickhouse_xml_06

到这一步我们的数据库已经连上了

设置用户名和密码—登陆设置

这里我们是连接到我们的容器上进行用户名密码的设置,

docker exec -it 02e52e00502b /bin/bash

然后进入到 clickhouse-server 目录 ​​cd /etc/clickhouse-server​

Docker部署clickhouse_容器_07

由于我们的容器上还没有编辑器,我们这里先安装一下vim

apt-get update
apt-get install vim -y

修改 clickhouse 的用户密码需要在 users.xml 中配置​​<users> </users>​​​ 标签下面就是所以的用户的配置,默认有一个​​default​​ 用户

      <!-- Users and ACL. -->
<users>
<!-- If user name was not specified, 'default' user is used. -->
<default>
<password></password>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<!-- Quota for user. -->
<quota>default</quota>
</default>
</users>

我们找到​​<password></password>​​​标签,这里有加密和明文两种形式,加密可以把​​<password> ​​​换成​​<password_sha256_hex>​​,标签内容就是加密后的密码

<password_sha256_hex>941785b4c29a2cb9bb6bb190c12edef9c8182041b382fe371dbe50e06ff8f6ad</password_sha256_hex>

这里我们就用明文吧

<password>www1234</password>

保存退出, 接下来重启容器,​​docker restart 02e52e00502b​

我们就发现我们的dbeaver连接不上了,这里我们编辑链接输入帐密就可以了

Docker部署clickhouse_xml_08

设置用户名和密码—挂载设置

其实设置密码的方法还是有点问题就是我们的容器如果没了我们的账户信息也没了,不方便运维,所以我们可以把帐密信息也存储的本地机器上,然后像挂载数据目录一样挂在上去。

我们可以先把容器里的信息拷贝一份到本地,然后修改,先创建一个存放配置文件的目录​​mkdir -p /Users/liuwenqiang/workspace/tmp/clickhouse/config​

Docker部署clickhouse_docker_09

## 切换目录 
cd /Users/liuwenqiang/workspace/tmp/clickhouse/config
## 将容器内config.xml拷贝至主机config目录
docker cp clickhouse:/etc/clickhouse-server/config.xml ./config.xml
## 将容器内users.xml拷贝至主机config目录
docker cp clickhouse-:/etc/clickhouse-server/users.xml ./users.xml

Docker部署clickhouse_用户名_10

这里我们创建一个新的用户​​root​​​ ,所以我们需要创建一个​​<root>​​​ 标签,添加到​​<users>​​​ 下,和​​ <default>​​ 同级

<root>
<password>www1234</password>
<networks><ip>::/0</ip></networks>
<profile>default</profile>
<quota>default</quota>
</root>

停止掉并删除前面的容器,然后重新运行下面的命令

docker run -d \
--name clickhouse \
-p 8123:8123 \
-p 9000:9000 \
-v /Users/liuwenqiang/workspace/tmp/clickhouse/db:/var/lib/clickhouse:rw \
-v /Users/liuwenqiang/workspace/tmp/clickhouse/config/config.xml:/etc/clickhouse-server/config.xml \
-v /Users/liuwenqiang/workspace/tmp/clickhouse/config/users.xml:/etc/clickhouse-server/users.xml \
yandex/clickhouse-server

启动之后我们就可以使用root 用户来连接了

Docker部署clickhouse_docker_11

总结

今天主要介绍了一下clickhouse 的docker 部署,不过建议真实环境下还是不要用docker 部署


举报

相关推荐

0 条评论