反编译 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 
相关推荐
小的~~32 分钟前
k8s使用本地docker私服启动自制的flink集群
docker·flink·kubernetes
@月落37 分钟前
alibaba获得店铺的所有商品 API接口
java·大数据·数据库·人工智能·学习
数据智能老司机1 小时前
Kubernetes从入门到精通系列——外部 DNS 和全局负载均衡
云原生·容器·kubernetes
码爸1 小时前
spark读mongodb
大数据·mongodb·spark
WPG大大通2 小时前
有奖直播 | onsemi IPM 助力汽车电气革命及电子化时代冷热管理
大数据·人工智能·汽车·方案·电气·大大通·研讨会
ws2019072 小时前
抓机遇,促发展——2025第十二届广州国际汽车零部件加工技术及汽车模具展览会
大数据·人工智能·汽车
Data-Miner2 小时前
196页满分PPT | 集团流程优化及IT规划项目案例
大数据·数据分析
徐*红2 小时前
Elasticsearch 8.+ 版本查询方式
大数据·elasticsearch
DolphinScheduler社区3 小时前
怎么办?用DolphinScheduler调度执行复杂的HiveSQL时无法正确识别符号
大数据
goTsHgo3 小时前
Hive自定义函数——简单使用
大数据·hive·hadoop