前言
通过本篇文章,你可以学到
- 如何制作自己的Docker镜像并上传到Dockerhub
如果这个镜像对你有用,你可以通过下面的命令从Dockerhub上直接下载,不需要通读后面的内容
docker pull jamine/clickhouse:21.12.3.32
复制代码
镜像内容包括
- clickhouse:21.12.3.32
- Java8
- vim编辑器
如果你想学习制作镜像,那么可以跳过背景这一小节,接着阅读后面的内容
背景
想玩一玩Clickhouse的自定义函数功能,用Java写一个程序,比如生成分布式id,当Kafka数据写入到CK时,为每条数据插入一个唯一ID。
但是Dockerhub上的Clickhouse镜像没有安装vim编辑器,也没有安装Java环境。
于是想着做一个包含Java环境的Clickhouse镜像
这里扩展下,写入ck的数据加唯一id的方式:
- 编写Java代码实现分布式id,使用Kafka的stream处理能力,流处理时就把唯一id加上
- 或者用flink这样的流处理框架,通过编程的方式在流上处理
Dockerfile
FROM clickhouse/clickhouse-server:21.12.3.32
# 配置阿里云镜像源
ADD aliyun.list /etc/apt/sources.list.d/
# 安装vim
RUN apt-get update \
&& apt-get install -y vim
# FROM clickhouse:v1
# 安装jdk8
RUN wget -P /opt https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/8/jdk/x64/linux/OpenJDK8U-jdk_x64_linux_hotspot_8u312b07.tar.gz
# ADD OpenJDK8U-jdk_x64_linux_hotspot_8u312b07.tar.gz /opt
ENV LANG=C.UTF-8
ENV JAVA_HOME /opt/jdk8u312-b07
ENV PATH $PATH:$JAVA_HOME/bin
复制代码
aliyun.list
#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
#添加清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse multiverse
复制代码
构建镜像
制作好镜像后,直接运行docker build构建镜像
docker build -t jamine/clickhouse:21.12.3.32 .
复制代码
- -t:打tag
运行容器
镜像构建好后,运行容器
docker run -d --name clickhouse-server \
--ulimit nofile=262144:262144 \
--network mynet \
--ip 72.118.10.15 \
-p 9000:9000 \
-p 8123:8123 \
-p 9009:9009 \
-v clickhouse_config:/etc/clickhouse-server \
-v ~/data/clickhouse/data:/var/lib/clickhouse \
-v ~/data/clickhouse/log:/var/log/clickhouse-server \
-v ~/data/clickhouse/etc/apt:/etc/apt \
--privileged=true --user=root \
jamine/clickhouse:21.12.3.32
复制代码
上传到Dockerhub
docker push jamine/clickhouse:21.12.3.32
复制代码
镜像上传后,下次可以直接拉镜像到本地
docker pull jamine/clickhouse:21.12.3.32
复制代码