镜像构建历史
# 2026-10-10 02:51:35 0.00B 设置默认要执行的命令
CMD ["/app/.venv/bin/python" "-m" "uvicorn" "app.main:app" "--host" "0.0.0.0" "--port" "8000" "--log-level" "info" "--no-access-log"]
# 2026-10-10 02:51:35 0.00B 指定检查容器健康状态的命令
HEALTHCHECK &{["CMD-SHELL" "python -c \"import urllib.request; urllib.request.urlopen('http://localhost:8000/healthz')\" || exit 1"] "30s" "5s" "15s" "0s" '\x03'}
# 2026-10-10 02:51:35 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-10-10 02:51:35 0.00B 指定运行容器时使用的用户
USER app
# 2026-10-10 02:51:35 0.00B 执行命令并创建新的镜像层
RUN |2 VERSION=v2.6.0 GIT_SHA=2e24f73991d8a4370ba7a533bae6b0dfc99daa7a /bin/sh -c /app/.venv/bin/python <<'PYCHECK'
import pathlib
import sys
tag = f"python{sys.version_info.major}.{sys.version_info.minor}"
lib = pathlib.Path("/app/.venv/lib")
if not (lib / tag / "site-packages").is_dir():
have = sorted(p.name for p in lib.iterdir())
sys.exit(
f"venv/runtime Python mismatch: interpreter is {tag}, but the copied "
f"venv provides {have}. Align the builder stage's uv:pythonX.Y tag "
f"with the runtime FROM."
)
import fastapi # noqa: F401
import pydantic_core
import pydantic_settings # noqa: F401
import uvicorn # noqa: F401
print(
f"runtime OK: Python {sys.version.split()[0]}, "
f"pydantic_core {pydantic_core.__version__}"
)
PYCHECK # buildkit
# 2026-10-10 02:51:34 0.00B 设置环境变量 PATH HOME KI_BUILD_VERSION PYTHONUNBUFFERED PYTHONDONTWRITEBYTECODE
ENV PATH=/app/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/home/app KI_BUILD_VERSION=v2.6.0 PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1
# 2026-10-10 02:51:34 307.36KB 复制新文件或目录到容器中
COPY --chown=app:app /build/packages/kube-q/kube_q ./kube_q # buildkit
# 2026-10-10 02:51:34 19.12KB 复制新文件或目录到容器中
COPY --chown=app:app /build/packages/ki-protocol/ki_protocol ./ki_protocol # buildkit
# 2026-10-10 02:51:34 1.60MB 复制新文件或目录到容器中
COPY --chown=app:app /build/packages/kubeintellect-server/app ./app # buildkit
# 2026-10-10 02:51:34 181.74MB 复制新文件或目录到容器中
COPY --chown=app:app /build/.venv /app/.venv # buildkit
# 2026-10-10 02:51:19 0.00B 执行命令并创建新的镜像层
RUN |2 VERSION=v2.6.0 GIT_SHA=2e24f73991d8a4370ba7a533bae6b0dfc99daa7a /bin/sh -c chown app:app /app # buildkit
# 2026-10-10 02:51:19 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-10-10 02:51:19 8.89KB 执行命令并创建新的镜像层
RUN |2 VERSION=v2.6.0 GIT_SHA=2e24f73991d8a4370ba7a533bae6b0dfc99daa7a /bin/sh -c groupadd --gid 1001 app && useradd --uid 1001 --gid app --create-home --shell /bin/sh app # buildkit
# 2026-10-10 02:51:19 57.32MB 复制新文件或目录到容器中
COPY /usr/local/bin/kubectl /usr/local/bin/kubectl # buildkit
# 2026-10-10 02:51:16 0.00B 执行命令并创建新的镜像层
RUN |2 VERSION=v2.6.0 GIT_SHA=2e24f73991d8a4370ba7a533bae6b0dfc99daa7a /bin/sh -c apt-get update && apt-get install -y --no-install-recommends ca-certificates && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-10-10 02:51:16 0.00B 添加元数据标签
LABEL org.opencontainers.image.title=KubeIntellect org.opencontainers.image.version=v2.6.0 org.opencontainers.image.revision=2e24f73991d8a4370ba7a533bae6b0dfc99daa7a org.opencontainers.image.description=AI-powered Kubernetes management org.opencontainers.image.source=https://github.com/MSKazemi/kubeintellect org.opencontainers.image.url=https://kubeintellect.com org.opencontainers.image.documentation=https://mskazemi.github.io/kubeintellect/
# 2026-10-10 02:51:16 0.00B 定义构建参数
ARG GIT_SHA=unknown
# 2026-10-10 02:51:16 0.00B 定义构建参数
ARG VERSION=dev
# 2026-10-06 10:05:24 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-10-06 10:05:24 36.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit
# 2026-10-06 10:05:24 35.68MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev g++ gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
# 2026-10-06 09:55:29 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=f4b1bfb3c79b5bb11b8d228a12504163b4c0dab4d679828d8f5f26b6cb6ab35d
# 2026-10-06 09:55:29 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.13.16
# 2026-10-06 09:55:29 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
# 2026-10-06 09:55:29 3.81MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit
# 2026-10-06 09:55:29 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-10-05 08:00:00 78.82MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1791158400'
镜像信息
{
"Id": "sha256:9ea7e1b82a800400e9e417d69bf410a80ac1423761c3d13677d5144feecbb99c",
"RepoTags": [
"ghcr.io/mskazemi/kubeintellect:2.6.0",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/mskazemi/kubeintellect:2.6.0"
],
"RepoDigests": [
"ghcr.io/mskazemi/kubeintellect@sha256:1d2b74d49f636325052a24fa303efaa4a5b53e769ea7243da04da6f0ebbc1723",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/mskazemi/kubeintellect@sha256:6388a1a5d2a9dee38beb983ca23f6aa044ee22096a326995d4a3a98ca5685ad3"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-10-09T18:51:35.374434512Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "app",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/app/.venv/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305",
"PYTHON_VERSION=3.13.16",
"PYTHON_SHA256=f4b1bfb3c79b5bb11b8d228a12504163b4c0dab4d679828d8f5f26b6cb6ab35d",
"HOME=/home/app",
"KI_BUILD_VERSION=v2.6.0",
"PYTHONUNBUFFERED=1",
"PYTHONDONTWRITEBYTECODE=1"
],
"Cmd": [
"/app/.venv/bin/python",
"-m",
"uvicorn",
"app.main:app",
"--host",
"0.0.0.0",
"--port",
"8000",
"--log-level",
"info",
"--no-access-log"
],
"Healthcheck": {
"Test": [
"CMD-SHELL",
"python -c \"import urllib.request; urllib.request.urlopen('http://localhost:8000/healthz')\" || exit 1"
],
"Interval": 30000000000,
"Timeout": 5000000000,
"StartPeriod": 15000000000,
"Retries": 3
},
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.opencontainers.image.created": "2026-10-09T18:51:08.004Z",
"org.opencontainers.image.description": "An AI SRE for Kubernetes: connects to your cluster, investigates with real tools, explains the root cause in plain English, and executes the fix only after you approve it. Peer-reviewed — Journal of Grid Computing, 2026.",
"org.opencontainers.image.documentation": "https://mskazemi.github.io/kubeintellect/",
"org.opencontainers.image.licenses": "MIT",
"org.opencontainers.image.revision": "2e24f73991d8a4370ba7a533bae6b0dfc99daa7a",
"org.opencontainers.image.source": "https://github.com/MSKazemi/kubeintellect",
"org.opencontainers.image.title": "kubeintellect",
"org.opencontainers.image.url": "https://kubeintellect.com",
"org.opencontainers.image.version": "2.6.0"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 359317825,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/b1900d3d678ad29897b092cb475b657d5ecfe667630443589d6ec8c7367e3260/diff:/var/lib/docker/overlay2/480f5e16e1ec030010071d42769dafc1b19d50f5f36df5758d4b1b54f2d37304/diff:/var/lib/docker/overlay2/bf5bfb979a73006dfcb4f50effc63b45c95ff9b02f7400734f61aaf44a648c97/diff:/var/lib/docker/overlay2/04eaf0165aee5a7bbf225e1a54b879d6c42cd53fdc9561999fad4c6e1f1cf57e/diff:/var/lib/docker/overlay2/3ed2b356afc564d050b638c8bbf4d7842a3c61149e9ec12a45a2aba5730c52a5/diff:/var/lib/docker/overlay2/e4916b489acbbcf95c464f507ce443e3997631b73d20070d30c4c59fad44a2af/diff:/var/lib/docker/overlay2/386455ebecd8f1d486c479aa57c91cfdc764811d4d0fb0c8cc452b4645faff0a/diff:/var/lib/docker/overlay2/547215ea354272b40829d2d089ba906e967f86ecb727bd4ef0a0748893e36513/diff:/var/lib/docker/overlay2/3730fee307d5d89735bdc23d060dc8396e01e3f1f5bbf82c4e9b10c1c9db8ea6/diff:/var/lib/docker/overlay2/50c9121eaa0383b942e63fb325768563e8ec29e432c34d4f54f1816538713995/diff:/var/lib/docker/overlay2/bc0c5daba5e0b27eb9b221e1888db14690f281fcf15f29a4bf2f93cfe46dc925/diff:/var/lib/docker/overlay2/31d0fb29f052ae5babd254b62f879957a097fcfc33ef3877f6ad325aa45bfd0f/diff:/var/lib/docker/overlay2/604b714072d6d7d347c28c686d63b0e2ff9ffc46327fc28a9c9e0fd617161589/diff",
"MergedDir": "/var/lib/docker/overlay2/926c3468693053fc63822d3b47eeec401f3fa75274db928fb01d1acf85b41862/merged",
"UpperDir": "/var/lib/docker/overlay2/926c3468693053fc63822d3b47eeec401f3fa75274db928fb01d1acf85b41862/diff",
"WorkDir": "/var/lib/docker/overlay2/926c3468693053fc63822d3b47eeec401f3fa75274db928fb01d1acf85b41862/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:15f1c8eb1ab18eae260c7fb6296434cbe1ff0e1e30fd814ae92a80dd54005e62",
"sha256:285510654d1d6a26507ed6576cae8fa995ba16469050787032499e9a34cbe9f5",
"sha256:acbf34fa608c522642659b109edfd70959b7c26593ea51141f3d339cc1875cfd",
"sha256:d175833b7147479e4e08f4f5d9dd2055b5ee746dc2f73520462468538d168bf6",
"sha256:a345f9e987cfd5d9a0ab14908958e38d5fb91e23b2d4e7b3c150f8e5b17e045b",
"sha256:7b46dda7d0ddb473b2793ac118f15e7e57dea723c825cbac33c33387fe3dbd35",
"sha256:52f3335a63f989b32c1f16c7c9aa505ddfb80a4f18368a1dd018b5b1b0fad7b6",
"sha256:b69b9ef6979df06fe5fc437c4d94ecfa845fdf929c2f3cb7eb7f6634af9fece2",
"sha256:95ca6c1af3801919f054e465dd1b7adc68bdf60e7f03d905242c10c4cac6f69d",
"sha256:8a82b0d9247ce37c0a2b4d78265be7a1155e122ed8a42b1f84386707b58548ce",
"sha256:dee0ff418ed14da5eea2d6ad15a0a85d2e7778ef4eacbdd079a27fe50cb46c73",
"sha256:279bcc31b421a6744714a5326d9fff0ad9cfc1edb345c808f123d819855253d5",
"sha256:e62c9aef23b2286ec154ffa8358f8cc8670260aa8ab07a6c2cef47b9823f6266",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
]
},
"Metadata": {
"LastTagTime": "2026-11-10T14:33:26.558871234+08:00"
}
}