镜像构建历史
# 2026-05-13 18:33:09 0.00B 设置默认要执行的命令
CMD ["--help"]
# 2026-05-13 18:33:09 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["entrypoint.sh"]
# 2026-05-13 18:33:09 25.13KB 复制新文件或目录到容器中
COPY . /workspace # buildkit
# 2026-05-13 18:33:09 0.00B 设置工作目录为/workspace
WORKDIR /workspace
# 2026-05-13 18:33:09 0.00B 设置环境变量 HF_HUB_OFFLINE TRANSFORMERS_OFFLINE HF_HOME HOME PATH
ENV HF_HUB_OFFLINE=1 TRANSFORMERS_OFFLINE=1 HF_HOME=/home/benchy/.cache/huggingface HOME=/home/benchy PATH=/home/benchy/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-05-13 18:33:09 0.00B 指定运行容器时使用的用户
USER 1000
# 2026-05-13 18:33:09 632.00B 执行命令并创建新的镜像层
RUN |5 DEBIAN_FRONTEND=noninteractive HTTP_PROXY= HTTPS_PROXY= NO_PROXY= DEFAULT_BOOK_URL=https://www.gutenberg.org/files/1661/1661-0.txt /bin/sh -c printf '#!/bin/bash\nset -e\nfor a in "$@"; do\n case "$a" in --help|-h|--version) exec llama-benchy "$@" ;; esac\ndone\nfor a in "$@"; do\n if [ "$a" = "--tokenizer" ]; then exec llama-benchy "$@"; fi\ndone\nif [ -d "$TOKENIZER_PATH" ] && [ -n "$(ls -A "$TOKENIZER_PATH" 2>/dev/null)" ]; then\n exec llama-benchy --tokenizer "$TOKENIZER_PATH" "$@"\nfi\necho "ERROR: this image runs fully offline and requires a tokenizer." >&2\necho "Mount one at $TOKENIZER_PATH:" >&2\necho " docker run -v /path/to/tokenizer:$TOKENIZER_PATH:ro ... <image>" >&2\necho "Or pass --tokenizer <name> for a pre-cached tokenizer (gpt2 is pre-cached)." >&2\nexit 1\n' > /home/benchy/.local/bin/entrypoint.sh && chmod +x /home/benchy/.local/bin/entrypoint.sh # buildkit
# 2026-05-13 18:33:09 0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/tokenizer]
# 2026-05-13 18:33:09 3.47MB 执行命令并创建新的镜像层
RUN |5 DEBIAN_FRONTEND=noninteractive HTTP_PROXY= HTTPS_PROXY= NO_PROXY= DEFAULT_BOOK_URL=https://www.gutenberg.org/files/1661/1661-0.txt /bin/sh -c useradd --uid 1000 --gid 0 --create-home --shell /bin/bash benchy && mkdir -p /workspace /home/benchy/.local/bin /home/benchy/.cache/huggingface /home/benchy/.cache/llama-benchy /tokenizer && cp -a /root/.cache/huggingface/. /home/benchy/.cache/huggingface/ && cp -a /root/.cache/llama-benchy/. /home/benchy/.cache/llama-benchy/ && chown -R 1000:0 /workspace /home/benchy /tokenizer && chmod -R g+rwX /workspace /home/benchy /tokenizer && chmod g+rwX /home/benchy/.cache /home/benchy/.cache/huggingface /home/benchy/.cache/llama-benchy # buildkit
# 2026-05-13 18:33:08 607.50KB 执行命令并创建新的镜像层
RUN |5 DEBIAN_FRONTEND=noninteractive HTTP_PROXY= HTTPS_PROXY= NO_PROXY= DEFAULT_BOOK_URL=https://www.gutenberg.org/files/1661/1661-0.txt /bin/sh -c python -c "import hashlib, os, ssl, urllib.request; url = '${DEFAULT_BOOK_URL}'; h = hashlib.md5(url.encode()).hexdigest(); d = '/root/.cache/llama-benchy'; os.makedirs(d, exist_ok=True); ctx = ssl._create_unverified_context(); data = urllib.request.urlopen(url, context=ctx).read(); p = os.path.join(d, f'{h}.txt'); open(p, 'wb').write(data); assert b'START OF THE PROJECT GUTENBERG EBOOK' in data, 'gutenberg marker missing'; print(f'cached book: {p} ({len(data)} bytes)')" # buildkit
# 2026-05-13 18:33:05 0.00B 定义构建参数
ARG DEFAULT_BOOK_URL=https://www.gutenberg.org/files/1661/1661-0.txt
# 2026-05-13 18:33:05 2.86MB 执行命令并创建新的镜像层
RUN |4 DEBIAN_FRONTEND=noninteractive HTTP_PROXY= HTTPS_PROXY= NO_PROXY= /bin/sh -c HF_HUB_OFFLINE=0 TRANSFORMERS_OFFLINE=0 python -c "from transformers import AutoTokenizer; AutoTokenizer.from_pretrained('gpt2'); print('gpt2 tokenizer cached')" # buildkit
# 2026-05-13 18:32:52 1.35KB 执行命令并创建新的镜像层
RUN |4 DEBIAN_FRONTEND=noninteractive HTTP_PROXY= HTTPS_PROXY= NO_PROXY= /bin/sh -c SITE=$(python -c "import site; print(site.getsitepackages()[0])") && printf '%s\n' 'import ssl, warnings' '# urllib / stdlib' 'ssl._create_default_https_context = ssl._create_unverified_context' '# urllib3 (used by requests, and sometimes directly)' 'try:' ' import urllib3' ' urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)' ' _pm = urllib3.PoolManager.__init__' ' def _pm_init(self, *a, **kw):' ' kw["cert_reqs"] = "CERT_NONE"' ' _pm(self, *a, **kw)' ' urllib3.PoolManager.__init__ = _pm_init' 'except Exception: pass' '# requests' 'try:' ' import requests' ' _orig = requests.Session.request' ' def _req(self, *a, **kw):' ' kw["verify"] = False' ' return _orig(self, *a, **kw)' ' requests.Session.request = _req' 'except Exception: pass' '# httpx (used by openai SDK)' 'try:' ' import httpx' ' _ci, _ai = httpx.Client.__init__, httpx.AsyncClient.__init__' ' def _c(self, *a, **kw):' ' kw["verify"] = False; _ci(self, *a, **kw)' ' def _a(self, *a, **kw):' ' kw["verify"] = False; _ai(self, *a, **kw)' ' httpx.Client.__init__ = _c' ' httpx.AsyncClient.__init__ = _a' 'except Exception: pass' '# aiohttp' 'try:' ' import aiohttp' ' _tcp = aiohttp.TCPConnector.__init__' ' def _tcp_init(self, *a, **kw):' ' kw["ssl"] = False' ' _tcp(self, *a, **kw)' ' aiohttp.TCPConnector.__init__ = _tcp_init' 'except Exception: pass' 'warnings.filterwarnings("ignore", message="Unverified HTTPS request")' > "$SITE/sitecustomize.py" && python -c "import sitecustomize; print('sitecustomize loaded')" # buildkit
# 2026-05-13 18:32:51 264.89MB 执行命令并创建新的镜像层
RUN |4 DEBIAN_FRONTEND=noninteractive HTTP_PROXY= HTTPS_PROXY= NO_PROXY= /bin/sh -c pip config set global.trusted-host "pypi.org pypi.python.org files.pythonhosted.org" && python -m pip install --upgrade pip setuptools wheel && pip install --upgrade llama-benchy && pip check # buildkit
# 2026-05-13 18:31:07 15.27MB 执行命令并创建新的镜像层
RUN |4 DEBIAN_FRONTEND=noninteractive HTTP_PROXY= HTTPS_PROXY= NO_PROXY= /bin/sh -c apt-get update && apt-get upgrade -y && apt-get install -y --no-install-recommends bash ca-certificates curl wget jq && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-05-13 18:31:07 0.00B 设置环境变量 TOKENIZER_PATH
ENV TOKENIZER_PATH=/tokenizer
# 2026-05-13 18:31:07 0.00B 设置环境变量 PYTHONHTTPSVERIFY GIT_SSL_NO_VERIFY NODE_TLS_REJECT_UNAUTHORIZED PIP_TRUSTED_HOST SSL_VERIFY
ENV PYTHONHTTPSVERIFY=0 GIT_SSL_NO_VERIFY=true NODE_TLS_REJECT_UNAUTHORIZED=0 PIP_TRUSTED_HOST=pypi.org pypi.python.org files.pythonhosted.org SSL_VERIFY=false
# 2026-05-13 18:31:07 0.00B 设置环境变量 PIP_NO_CACHE_DIR PIP_DISABLE_PIP_VERSION_CHECK PYTHONUNBUFFERED PYTHONDONTWRITEBYTECODE TERM
ENV PIP_NO_CACHE_DIR=1 PIP_DISABLE_PIP_VERSION_CHECK=1 PYTHONUNBUFFERED=1 PYTHONDONTWRITEBYTECODE=1 TERM=xterm-256color
# 2026-05-13 18:31:07 0.00B 定义构建参数
ARG NO_PROXY
# 2026-05-13 18:31:07 0.00B 定义构建参数
ARG HTTPS_PROXY
# 2026-05-13 18:31:07 0.00B 定义构建参数
ARG HTTP_PROXY
# 2026-05-13 18:31:07 0.00B 定义构建参数
ARG DEBIAN_FRONTEND=noninteractive
# 2026-05-09 04:09:33 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-05-09 04:09:33 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-05-09 04:09:33 36.77MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev 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-05-09 04:00:51 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684
# 2026-05-09 04:00:51 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.12.13
# 2026-05-09 04:00:51 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
# 2026-05-09 04:00:51 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-05-09 04:00:51 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-05-09 04:00:51 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-05-05 08:00:00 78.62MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1777939200'
镜像信息
{
"Id": "sha256:32756949aedd31e4a3bba0a594a639ae18b5ce98daa49a1129a602d9675a28ea",
"RepoTags": [
"n8500x/llama-benchy:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/n8500x/llama-benchy:latest"
],
"RepoDigests": [
"n8500x/llama-benchy@sha256:6fea96c458ed014cc2f635f493cc3d4e40e1b079113140a01eff98b4ee7fb976",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/n8500x/llama-benchy@sha256:6fea96c458ed014cc2f635f493cc3d4e40e1b079113140a01eff98b4ee7fb976"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-05-13T10:33:09.7192794Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "1000",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/home/benchy/.local/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=C.UTF-8",
"GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305",
"PYTHON_VERSION=3.12.13",
"PYTHON_SHA256=c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684",
"PIP_NO_CACHE_DIR=1",
"PIP_DISABLE_PIP_VERSION_CHECK=1",
"PYTHONUNBUFFERED=1",
"PYTHONDONTWRITEBYTECODE=1",
"TERM=xterm-256color",
"PYTHONHTTPSVERIFY=0",
"GIT_SSL_NO_VERIFY=true",
"NODE_TLS_REJECT_UNAUTHORIZED=0",
"PIP_TRUSTED_HOST=pypi.org pypi.python.org files.pythonhosted.org",
"SSL_VERIFY=false",
"TOKENIZER_PATH=/tokenizer",
"HF_HUB_OFFLINE=1",
"TRANSFORMERS_OFFLINE=1",
"HF_HOME=/home/benchy/.cache/huggingface",
"HOME=/home/benchy"
],
"Cmd": [
"--help"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": {
"/tokenizer": {}
},
"WorkingDir": "/workspace",
"Entrypoint": [
"entrypoint.sh"
],
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 406318688,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/9e4a276a672e5cde113f44bbc2bd38847e354b86896ff20dd9f39ebc7ba434e6/diff:/var/lib/docker/overlay2/89aa80eb65fcd78d670de3d052797acf2382cf1c9c721716e95b820a56a79059/diff:/var/lib/docker/overlay2/895fb14915e48112112a15250ecf60899cf71ca59685be09a204f6cce4574297/diff:/var/lib/docker/overlay2/bfce7dc5d071bcab88ddffc830e4cd0b6e7bd5cf4f6f3e88ea9bdcbc71504022/diff:/var/lib/docker/overlay2/d6c3be007305afaa3f5836a03f30e117076f531aaa1df55f7712b0af9801011e/diff:/var/lib/docker/overlay2/2e6e46b113b9778001181c1f6563e127b0c3b57910656976a1f87eceaf06cb40/diff:/var/lib/docker/overlay2/acaf9da5c6615ae48b02c914bdd729a527488e068d1648ee1d4cd24dd8e7f3c0/diff:/var/lib/docker/overlay2/be151f65b494589c337e50798fd6a9ac17bc101e2e8c9903066203ae30cae2eb/diff:/var/lib/docker/overlay2/76412ec3d75e2157803e7793bdf96e64a8c826cf7405e3580cf46be9f41b1bed/diff:/var/lib/docker/overlay2/cc1598f2f5262d9bf20212cefaa6c84c1c6b091a53e4ea3807a5ef74cd2832a1/diff:/var/lib/docker/overlay2/d6006596a14593a212a83dfffe961aa6103f314f134518181635ff337319f9ef/diff:/var/lib/docker/overlay2/bebc46f9a94ba59f0356b20893a3bdbc7c714dc13ed4a6669b841a42354f0378/diff",
"MergedDir": "/var/lib/docker/overlay2/4c34da0fd9fd6662bf11286708de10ed0108031c2074cf73a4a6ffe3fb0d0bbf/merged",
"UpperDir": "/var/lib/docker/overlay2/4c34da0fd9fd6662bf11286708de10ed0108031c2074cf73a4a6ffe3fb0d0bbf/diff",
"WorkDir": "/var/lib/docker/overlay2/4c34da0fd9fd6662bf11286708de10ed0108031c2074cf73a4a6ffe3fb0d0bbf/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:79dd1f4c855cd061f687a994426634cf5f84c8ecdbc66c7a7d118e828dd93c99",
"sha256:1361e0a963c66ac67506e2b5cacf01a39cc0816185f96afe77031eb5d4ba2d56",
"sha256:fae8529c7ef7ef831623bd668a9a847f681ab78e77abb2fb84bd7d3c47a70cc0",
"sha256:23ed4b6439ad2c4b1602f19014cc7a90b49a943eabe7f8ab9bb1aa7c0482949c",
"sha256:f1c6d87b8217fdba622028fabd80547865c063377a6acc711fd03601bfe98f13",
"sha256:c946902a6e9fb18f1c10c01dcf9f22caabc8ca79b02cdb38756f6b65722b06e8",
"sha256:760b488ea1ec412678de50aeb4b897d867de61e92974909c5b7c700aec484a3d",
"sha256:f23470db8db9e6c19bb69af6f65f01331b4f92de62c6c9710caa0dbcaa57698a",
"sha256:bb6c8a55a3b4778965e18c22248052e532f6bb5df7819e3adfcb68758728ed3c",
"sha256:aac6e4b03e6c678ee0748e4d5cc0d8cae431c1d6591eba172943e8e24ecd96f0",
"sha256:185a98c4d3e370310ede1418a645bb0d9d9d453d9b477bad128eb81beffdea95",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:6e8cac8a8cc811aa8bdf2771ab37ccc181e2cf77b614ec57e04ed1d1498445f2"
]
},
"Metadata": {
"LastTagTime": "2026-08-27T16:12:33.020300813+08:00"
}
}