拉取镜像
# 开代理
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
docker pull clickhouse/clickhouse-server
安装部署clickhouse
先启动一个临时容器,用来获取config.xml和users.xml配置文件,并进行修改。
--rm:代表这是个临时容器,停止服务的时候,就会自动删除该容器; -d:后台运行; --name=:给你启动的容器命名;
docker run --rm -d --name=temp-clickhouse-server clickhouse/clickhouse-server
在本机创建文件目录
mkdir -p ~/data/clickhouse/conf ~/data/clickhouse/data ~/data/clickhouse/log
复制配置文件到本机上,按照自身需求修改,开放端口、设置密码之类的。
docker cp temp-clickhouse-server:/etc/clickhouse-server/users.xml ~/data/clickhouse/conf/users.xml
docker cp temp-clickhouse-server:/etc/clickhouse-server/config.xml ~/data/clickhouse/conf/config.xml
copy失败的话,不知道docker中的clickhouse配置文件在哪,可以进容器中看看(默认一般上面那个路径)
# 这个操作应该用不到
docker exec -it ${CONTAINER ID} bash
# config.xml 改一下主机
<!-- <listen_host>::</listen_host> -->
<listen_host>::</listen_host>
# user.xml 改一下 clickhouse 的连接密码,不设置密码 数据是只读的
<password>123456</password>
<!-- List of networks with open access.
启动clickhouse
-p:指定映射端口,本机端口:服务端口;
-v:映射文件,将上面copy下来的文件(目录)映射到docker容器中使用(本机目录:docker中的目录)。可以看到我存储路径也改到本机内了(第三个--volume),因为我将本机内部的data目录(~/data/clickhouse/data)映射到config.xml中的数据存储目录(/var/lib/clickhouse/),之后数据是直接存到本机的data目录中 ; 最后再加上你拉取的镜像。
docker run -d --name=clickhouse-server-docker \
-p 8123:8123 \
-v ~/data/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
-v ~/data/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
-v ~/data/clickhouse/data:/var/lib/clickhouse/ \
clickhouse/clickhouse-server
暴露 9004 端口 供 mysql客户端连接
docker run -d --name=clickhouse-server-docker -p 8123:8123 -p 9004:9004 -v ~/data/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml -v ~/data/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml -v ~/data/clickhouse/data:/var/lib/clickhouse/ clickhouse/clickhouse-server
远程访问clickhouse
如上图点击连接 然后保存