反编译 Trino Dockerfile

文章目录

反编译 Trino Dockerfile

反编译Dockerfile命令

shell 复制代码
alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/laniksj/dfimage"
dfimage trinodb/trino:432

反编译后Dockerfile内容

shell 复制代码
Unable to find image 'ghcr.io/laniksj/dfimage:latest' locally
latest: Pulling from laniksj/dfimage
4abcf2066143: Pull complete 
a9cd27405e55: Pull complete 
905b6ecc7ae9: Pull complete 
2799eae2f25b: Pull complete 
eddc0410333a: Pull complete 
e79eaf700b78: Pull complete 
c9222d5c8c6f: Pull complete 
fb2a4c462b18: Pull complete 
Digest: sha256:a9b7704ff2a927649d872c05b179ada8bb1503387f58f125bfbf0a155749f05e
Status: Downloaded newer image for ghcr.io/laniksj/dfimage:latest
FROM <base image not found locally>
ADD file:139424fc60c0a17394da68faf4af3a17c9e959b6a1ce74c5b53ffc959145a63c in /
RUN /bin/sh -c mv -f /etc/yum.repos.d/ubi.repo /tmp || :
ADD file:ecc29a1455ca1b7c82018555e16e2e802135974523df6748e431f8707e759ddd in /tmp/tls-ca-bundle.pem
ADD multi:eed63f5f84efa377cb20d8bc2a3294d6aeffff59ee5380d49f1903b9673516dd in /etc/yum.repos.d/
LABEL maintainer="Red Hat, Inc."
LABEL com.redhat.component="ubi9-minimal-container"       name="ubi9-minimal"       version="9.2"
LABEL com.redhat.license_terms="https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI"
LABEL summary="Provides the latest release of the minimal Red Hat Universal Base Image 9."
LABEL description="The Universal Base Image Minimal is a stripped down image that uses microdnf as a package manager. This base image is freely redistributable, but Red Hat only supports Red Hat technologies through subscriptions for Red Hat products. This image is maintained by Red Hat and updated regularly."
LABEL io.k8s.display-name="Red Hat Universal Base Image 9 Minimal"
LABEL io.openshift.expose-services=""
LABEL io.openshift.tags="minimal rhel9"
ENV container oci
ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CMD ["/bin/bash"]
RUN /bin/sh -c rm -rf /var/log/*
ADD file:d4e564939c7991d70e1c5392b02502c604ec36a1612a39fc922b8bb32a567932 in /root/buildinfo/content_manifests/ubi9-minimal-container-9.2-750.1697625013.json
ADD file:7aa78ccab5aa351a2b340ceba6ac1dad0988268ffec2b6ff113734e516c775f9 in /root/buildinfo/Dockerfile-ubi9-minimal-9.2-750.1697625013
LABEL "release"="750.1697625013" "distribution-scope"="public" "vendor"="Red Hat, Inc." "build-date"="2023-10-18T11:30:28" "architecture"="x86_64" "vcs-type"="git" "vcs-ref"="7ef59505f75bf0c11c8d3addefebee5ceaaf4c41" "io.k8s.description"="The Universal Base Image Minimal is a stripped down image that uses microdnf as a package manager. This base image is freely redistributable, but Red Hat only supports Red Hat technologies through subscriptions for Red Hat products. This image is maintained by Red Hat and updated regularly." "url"="https://access.redhat.com/containers/#/registry.access.redhat.com/ubi9-minimal/images/9.2-750.1697625013"
RUN /bin/sh -c rm -f '/etc/yum.repos.d/odcs-2460177-f3ccb.repo' '/etc/yum.repos.d/gitweb-a7836.repo'
RUN /bin/sh -c rm -f /tmp/tls-ca-bundle.pem
RUN /bin/sh -c mv -fZ /tmp/ubi.repo /etc/yum.repos.d/ubi.repo || :
RUN ARG JDK_VERSION
RUN ENV JAVA_HOME=/usr/lib/jvm/jdk-21.0.1
RUN ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/jdk-21.0.1/bin
RUN COPY /usr/lib/jvm/jdk-21.0.1 /usr/lib/jvm/jdk-21.0.1 # buildkit
RUN RUN |1 JDK_VERSION=21.0.1 /bin/sh -c set -xeu \
    &&     microdnf update -y \
    &&     microdnf install -y tar less python3 shadow-utils \
    &&     update-alternatives --install /usr/bin/python python /usr/bin/python3 1 \
    &&     groupadd trino --gid 1000 \
    &&     useradd trino --uid 1000 --gid 1000 --create-home \
    &&     mkdir -p /usr/lib/trino /data/trino \
    &&     chown -R "trino:trino" /usr/lib/trino /data/trino # buildkit
RUN ARG TRINO_VERSION
RUN COPY trino-cli-432-executable.jar /usr/bin/trino # buildkit
RUN COPY trino-server-432 /usr/lib/trino # buildkit
RUN COPY default/etc /etc/trino # buildkit
RUN COPY /libjvmkill.so /usr/lib/trino/bin # buildkit
RUN EXPOSE map[8080/tcp:{}]
RUN USER trino:trino
RUN CMD ["/usr/lib/trino/bin/run-trino"]
RUN HEALTHCHECK &{["CMD-SHELL" "/usr/lib/trino/bin/health-check"] "10s" "5s" "10s" '\x00'}

获取 Trino 启动脚本

shell 复制代码
# 下载 trino helm
helm repo add trino https://trinodb.github.io/charts/
helm pull trino/trino --version 0.19.0

# 部署一个demo trino on k8s集群,获取官方run-trino脚本
# Chart.yaml 上级目录下执行
helm install example-trino-cluster trino/trino 

# 根据反编译Dockerfile内容 'RUN CMD ["/usr/lib/trino/bin/run-trino"]' 登录pod查看 /usr/lib/trino/bin/run-trino内容
# 登录 pod
kubectl exec -it example-trino-cluster-coordinator-77dbb597dd-sn2x4 -- bash
cat /usr/lib/trino/bin/run-trino

# 从pod 拷贝 libjvmkill.so 到宿主机
# kubectl cp example-trino-cluster-coordinator-77dbb597dd-wszvm:/usr/lib/trino/bin/libjvmkill.so ./libjvmkill.so

# 卸载
# helm uninstall example-trino-cluster 
shell 复制代码
# cat /usr/lib/trino/bin/run-trino

#!/bin/bash

set -xeuo pipefail

launcher_opts=(--etc-dir /etc/trino)
if ! grep -s -q 'node.id' /etc/trino/node.properties; then
    launcher_opts+=("-Dnode.id=${HOSTNAME}")
fi

exec /usr/lib/trino/bin/launcher run "${launcher_opts[@]}" "$@"
shell 复制代码
# cat /usr/lib/trino/bin/health-check 

#!/bin/bash

set -euo pipefail

function get_property() {
    grep "^$1=" "$2" | cut -d'=' -f2
}

scheme=http
port=8080

config=/etc/trino/config.properties
# prefer to use http even if https is enabled
if [ "$(get_property 'http-server.http.enabled' "$config")" == "false" ]; then
    scheme=https
    port=$(get_property http-server.https.port "$config")
else
    port=$(get_property http-server.http.port "$config")
fi

endpoint="$scheme://localhost:$port/v1/info"

# add --insecure to disable certificate verification in curl, in case a self-signed certificate is being used
if ! info=$(curl --fail --silent --show-error --insecure "$endpoint"); then
    echo >&2 "Server is not responding to requests"
    exit 1
fi

if ! grep -q '"starting":\s*false' <<<"$info" >/dev/null; then
    echo >&2 "Server is starting"
    exit 1
fi

卸载

shell 复制代码
# 卸载
helm uninstall example-trino-cluster 
相关推荐
金刚猿1 小时前
openfeign 拦截器实现微服务上下文打通
微服务·云原生·架构
lcw_lance1 小时前
技术中台-核心技术介绍(微服务、云原生、DevOps等)
微服务·云原生·devops
End9283 小时前
Spark之搭建Yarn模式
大数据·分布式·spark
我爱写代码?3 小时前
Spark 集群配置、启动与监控指南
大数据·开发语言·jvm·spark·mapreduce
TDengine (老段)3 小时前
什么是物联网 IoT 平台?
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
青云交3 小时前
Java 大视界 -- 基于 Java 的大数据分布式存储在工业互联网海量设备数据长期存储中的应用优化(248)
java·大数据·工业互联网·分布式存储·冷热数据管理·hbase 优化·kudu 应用
艾醒(AiXing-w)4 小时前
探索大语言模型(LLM):国产大模型DeepSeek vs Qwen,谁才是AI模型的未来?
大数据·人工智能·语言模型
£菜鸟也有梦4 小时前
从0到1上手Kafka:开启分布式消息处理之旅
大数据·kafka·消息队列
Elastic 中国社区官方博客4 小时前
在 Elasticsearch 中删除文档中的某个字段
大数据·数据库·elasticsearch·搜索引擎
alden_ygq4 小时前
Kubernetes Horizontal Pod Autosscaler(HPA)核心机制解析
云原生·容器·kubernetes