镜像构建历史
# 2026-10-09 04:37:24 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/opt/agent-canvas/entrypoint.sh"]
# 2026-10-09 04:37:24 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-10-09 04:37:24 0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/home/openhands/.openhands /projects]
# 2026-10-09 04:37:24 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-10-09 04:37:24 0.00B 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.19.0 AGENT_SERVER_VERSION=1.53.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.26.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.26.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c mkdir -p /home/openhands/.openhands/agent-canvas/conversations /home/openhands/.openhands/agent-canvas/bash_events /home/openhands/.openhands/automation /projects && chown -R openhands:openhands /home/openhands/.openhands /projects # buildkit
# 2026-10-09 04:37:24 26.18KB 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.19.0 AGENT_SERVER_VERSION=1.53.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.26.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.26.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c chmod +x /opt/agent-canvas/entrypoint.sh # buildkit
# 2026-10-09 04:37:24 26.18KB 复制新文件或目录到容器中
COPY docker/entrypoint.sh /opt/agent-canvas/entrypoint.sh # buildkit
# 2026-10-09 04:37:24 460.00B 复制新文件或目录到容器中
COPY /tmp/defaults.env /opt/agent-canvas/defaults.env # buildkit
# 2026-10-09 04:37:24 6.49KB 复制新文件或目录到容器中
COPY tools/ /opt/agent-canvas/tools/ # buildkit
# 2026-10-09 04:37:24 8.56KB 复制新文件或目录到容器中
COPY scripts/runtime-services-info.mjs /opt/agent-canvas/runtime-services-info.mjs # buildkit
# 2026-10-09 04:37:24 7.46KB 复制新文件或目录到容器中
COPY /build/node_modules/totalist /opt/agent-canvas/node_modules/totalist # buildkit
# 2026-10-09 04:37:24 33.01KB 复制新文件或目录到容器中
COPY /build/node_modules/mrmime /opt/agent-canvas/node_modules/mrmime # buildkit
# 2026-10-09 04:37:24 4.82KB 复制新文件或目录到容器中
COPY /build/node_modules/@polka /opt/agent-canvas/node_modules/@polka # buildkit
# 2026-10-09 04:37:24 21.88KB 复制新文件或目录到容器中
COPY /build/node_modules/sirv /opt/agent-canvas/node_modules/sirv # buildkit
# 2026-10-09 04:37:24 60.93KB 复制新文件或目录到容器中
COPY /build/node_modules/httpxy /opt/agent-canvas/node_modules/httpxy # buildkit
# 2026-10-09 04:37:24 8.60KB 复制新文件或目录到容器中
COPY scripts/proxy-utils.mjs /opt/agent-canvas/proxy-utils.mjs # buildkit
# 2026-10-09 04:37:24 2.45KB 复制新文件或目录到容器中
COPY scripts/bind-host.mjs /opt/agent-canvas/bind-host.mjs # buildkit
# 2026-10-09 04:37:24 28.81KB 复制新文件或目录到容器中
COPY scripts/static-server.mjs /opt/agent-canvas/static-server.mjs # buildkit
# 2026-10-09 04:37:24 9.72MB 复制新文件或目录到容器中
COPY /build/build /opt/agent-canvas/frontend # buildkit
# 2026-10-09 04:37:19 0.00B 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.19.0 AGENT_SERVER_VERSION=1.53.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.26.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.26.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c if [ -n "${AGENT_SERVER_SDK_GIT_REF}" ]; then BASE_GIT_URL="git+https://github.com/OpenHands/software-agent-sdk@${AGENT_SERVER_SDK_GIT_REF}" && uv pip install --system --force-reinstall "${BASE_GIT_URL}#subdirectory=openhands-sdk" "${BASE_GIT_URL}#subdirectory=openhands-tools" "${BASE_GIT_URL}#subdirectory=openhands-workspace"; fi # buildkit
# 2026-10-09 04:37:19 566.85MB 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.19.0 AGENT_SERVER_VERSION=1.53.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.26.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.26.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c uv pip install --system "openhands-automation==${AUTOMATION_VERSION}" "openhands-tools==${AGENT_SERVER_VERSION}" 2>/dev/null || pip install --no-cache-dir "openhands-automation==${AUTOMATION_VERSION}" "openhands-tools==${AGENT_SERVER_VERSION}" # buildkit
# 2026-10-09 04:37:12 480.65MB 执行命令并创建新的镜像层
RUN |9 AUTOMATION_VERSION=1.19.0 AGENT_SERVER_VERSION=1.53.0 AGENT_SERVER_SDK_GIT_REF= OPENHANDS_BUILD_GIT_SHA=3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.26.0 VITE_BASE_PATH=/canvas VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK AGENT_CANVAS_VERSION=1.26.0 DEBIAN_SNAPSHOT=20260930T000000Z /bin/sh -c if command -v apt-get >/dev/null 2>&1; then printf '%s\n' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT}/" 'Suites: trixie' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' '' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian-security/${DEBIAN_SNAPSHOT}/" 'Suites: trixie-security' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' > /etc/apt/sources.list.d/debian.sources && apt-get update && apt-get upgrade -y --no-install-recommends && rm -rf /var/lib/apt/lists/*; fi # buildkit
# 2026-10-09 04:37:12 0.00B 定义构建参数
ARG DEBIAN_SNAPSHOT=20260930T000000Z
# 2026-10-09 04:37:12 0.00B 指定运行容器时使用的用户
USER root
# 2026-10-09 04:37:12 0.00B 设置环境变量 VITE_POSTHOG_API_KEY
ENV VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK
# 2026-10-09 04:37:12 0.00B 设置环境变量 AGENT_CANVAS_BASE_PATH
ENV AGENT_CANVAS_BASE_PATH=/canvas
# 2026-10-09 04:37:12 0.00B 设置环境变量 AGENT_CANVAS_BUILD_GIT_REF
ENV AGENT_CANVAS_BUILD_GIT_REF=refs/tags/v1.26.0
# 2026-10-09 04:37:12 0.00B 设置环境变量 AGENT_CANVAS_BUILD_GIT_SHA
ENV AGENT_CANVAS_BUILD_GIT_SHA=3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2
# 2026-10-09 04:37:12 0.00B 添加元数据标签
LABEL org.opencontainers.image.revision=3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2
# 2026-10-09 04:37:12 0.00B 添加元数据标签
LABEL org.opencontainers.image.version=1.26.0
# 2026-10-09 04:37:12 0.00B 添加元数据标签
LABEL org.opencontainers.image.source=https://github.com/OpenHands/OpenHands
# 2026-10-09 04:37:12 0.00B 添加元数据标签
LABEL org.opencontainers.image.description=All-in-one agent-canvas: Agent Server + Automation + Frontend
# 2026-10-09 04:37:12 0.00B 添加元数据标签
LABEL org.opencontainers.image.title=agent-canvas
# 2026-10-09 04:37:12 0.00B 定义构建参数
ARG AGENT_CANVAS_VERSION=dev
# 2026-10-09 04:37:12 0.00B 定义构建参数
ARG VITE_POSTHOG_API_KEY=
# 2026-10-09 04:37:12 0.00B 定义构建参数
ARG VITE_BASE_PATH=/canvas
# 2026-10-09 04:37:12 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_REF=unknown
# 2026-10-09 04:37:12 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_SHA=unknown
# 2026-10-09 04:37:12 0.00B 定义构建参数
ARG AGENT_SERVER_SDK_GIT_REF=
# 2026-10-09 04:37:12 0.00B 定义构建参数
ARG AGENT_SERVER_VERSION
# 2026-10-09 04:37:12 0.00B 定义构建参数
ARG AUTOMATION_VERSION
# 2026-10-05 21:23:54 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/usr/local/bin/openhands-agent-server"]
# 2026-10-05 21:23:54 0.00B 设置环境变量 LD_LIBRARY_PATH
ENV LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:/usr/lib:/usr/lib/x86_64-linux-gnu:
# 2026-10-05 21:23:54 0.00B 执行命令并创建新的镜像层
RUN |1 USERNAME=openhands /bin/sh -c chmod +x /usr/local/bin/openhands-agent-server # buildkit
# 2026-10-05 21:23:53 113.32MB 复制新文件或目录到容器中
COPY --chown=openhands:openhands /agent-server/dist/openhands-agent-server /usr/local/bin/openhands-agent-server # buildkit
# 2026-10-05 21:21:37 0.00B 定义构建参数
ARG USERNAME
# 2026-10-05 21:21:37 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-10-05 21:21:37 0.00B 设置环境变量 OH_ACP_SKILL_SOURCING
ENV OH_ACP_SKILL_SOURCING=openhands_managed
# 2026-10-05 21:21:37 0.00B 设置环境变量 LOG_JSON
ENV LOG_JSON=true
# 2026-10-05 21:21:37 0.00B 设置工作目录为/
WORKDIR /
# 2026-10-05 21:21:37 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-10-05 21:21:37 685.60MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,browser,*) apt-get update; apt-get install -y --no-install-recommends "$(if grep -q "ubuntu" /etc/os-release; then echo "chromium-browser"; else echo "chromium"; fi)"; apt-get clean; rm -rf /var/lib/apt/lists/*; ;; esac # buildkit
# 2026-10-05 21:21:15 0.00B 设置环境变量 CHROME_BIN PUPPETEER_EXECUTABLE_PATH CHROMIUM_FLAGS
ENV CHROME_BIN=/usr/bin/chromium PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium CHROMIUM_FLAGS=--no-sandbox --disable-dev-shm-usage --disable-gpu
# 2026-10-05 21:21:15 42.79MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; mkdir -p -m 755 /etc/apt/keyrings; wget -nv -O /etc/apt/keyrings/githubcli-archive-keyring.gpg https://cli.github.com/packages/githubcli-archive-keyring.gpg; chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list; apt-get update; apt-get install -y gh; apt-get clean; rm -rf /var/lib/apt/lists/* # buildkit
# 2026-10-05 21:21:12 409.84MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,docker,*) ;; *) echo "INSTALL_CAPABILITIES excludes docker; skipping Docker Engine"; exit 0;; esac; if grep -q "ubuntu" /etc/os-release; then install -m 0755 -d /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc; chmod a+r /etc/apt/keyrings/docker.asc; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null; else install -m 0755 -d /etc/apt/keyrings; curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc; chmod a+r /etc/apt/keyrings/docker.asc; echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null; fi; apt-get update; apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; apt-get clean; rm -rf /var/lib/apt/lists/*; mkdir -p /etc/docker; echo '{"mtu": 1450}' > /etc/docker/daemon.json # buildkit
# 2026-10-05 21:21:01 1.15KB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,vscode,*) ;; *) exit 0;; esac; mkdir -p ${OPENVSCODE_SERVER_ROOT}/extensions; cp -r /tmp/vscode_extensions/. ${OPENVSCODE_SERVER_ROOT}/extensions/; chown -R ${USERNAME}:${USERNAME} ${OPENVSCODE_SERVER_ROOT}/extensions # buildkit
# 2026-10-05 21:21:00 243.76MB 执行命令并创建新的镜像层
RUN |4 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker RELEASE_TAG=openvscode-server-v1.109.5 RELEASE_ORG=gitpod-io /bin/sh -c set -eux; case ",$INSTALL_CAPABILITIES," in *,vscode,*) ;; *) echo "INSTALL_CAPABILITIES excludes vscode; skipping OpenVSCode Server"; exit 0;; esac; mkdir -p $(dirname ${OPENVSCODE_SERVER_ROOT}); arch=$(uname -m); if [ "${arch}" = "x86_64" ]; then arch="x64"; elif [ "${arch}" = "aarch64" ]; then arch="arm64"; elif [ "${arch}" = "armv7l" ]; then arch="armhf"; fi; wget https://github.com/${RELEASE_ORG}/openvscode-server/releases/download/${RELEASE_TAG}/${RELEASE_TAG}-linux-${arch}.tar.gz; tar -xzf ${RELEASE_TAG}-linux-${arch}.tar.gz; if [ -d "${OPENVSCODE_SERVER_ROOT}" ]; then rm -rf "${OPENVSCODE_SERVER_ROOT}"; fi; mv ${RELEASE_TAG}-linux-${arch} ${OPENVSCODE_SERVER_ROOT}; cp ${OPENVSCODE_SERVER_ROOT}/bin/remote-cli/openvscode-server ${OPENVSCODE_SERVER_ROOT}/bin/remote-cli/code; rm -f ${RELEASE_TAG}-linux-${arch}.tar.gz; chown -R ${USERNAME}:${USERNAME} ${OPENVSCODE_SERVER_ROOT} # buildkit
# 2026-10-05 21:20:56 0.00B 定义构建参数
ARG RELEASE_ORG=gitpod-io
# 2026-10-05 21:20:56 0.00B 定义构建参数
ARG RELEASE_TAG=openvscode-server-v1.109.5
# 2026-10-05 21:20:56 0.00B 设置环境变量 EDITOR VISUAL GIT_EDITOR OPENVSCODE_SERVER_ROOT
ENV EDITOR=code VISUAL=code GIT_EDITOR=code --wait OPENVSCODE_SERVER_ROOT=/openhands/.openvscode-server
# 2026-10-05 21:20:56 0.00B 执行命令并创建新的镜像层
RUN |2 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker /bin/sh -c set -eux; for capability in $(echo "$INSTALL_CAPABILITIES" | tr ',' ' '); do case "$capability" in vscode|browser|docker) ;; *) echo "Unknown capability '$capability' in INSTALL_CAPABILITIES" "(expected one of: vscode, browser, docker)" >&2; exit 1;; esac; done # buildkit
# 2026-10-05 21:20:56 55.19MB 复制新文件或目录到容器中
COPY /uv /uvx /bin/ # buildkit
# 2026-10-05 21:20:56 270.81MB 执行命令并创建新的镜像层
RUN |2 USERNAME=openhands INSTALL_CAPABILITIES=vscode,browser,docker /bin/sh -c set -eux; if command -v apt-get >/dev/null 2>&1; then apt-get -o Acquire::Retries=5 update; apt-get -o Acquire::Retries=5 install -y --no-install-recommends apt-transport-https apt-utils build-essential coreutils curl findutils gnupg grep jq lsb-release procps sed sudo tar util-linux wget xz-utils; rm -rf /var/lib/apt/lists/*; elif command -v apk >/dev/null 2>&1; then apk add --no-cache build-base coreutils curl findutils gnupg grep jq procps sudo tar util-linux wget xz; elif command -v microdnf >/dev/null 2>&1; then microdnf install -y coreutils curl findutils gcc gcc-c++ gnupg2 grep jq make procps-ng sed sudo tar util-linux wget xz; microdnf clean all; elif command -v dnf >/dev/null 2>&1; then dnf install -y coreutils curl findutils gcc gcc-c++ gnupg2 grep jq make procps-ng sed sudo tar util-linux wget xz; dnf clean all; elif command -v yum >/dev/null 2>&1; then yum install -y coreutils curl findutils gcc gcc-c++ gnupg2 grep jq make procps-ng sed sudo tar util-linux wget xz; yum clean all; elif command -v zypper >/dev/null 2>&1; then zypper --non-interactive install --no-recommends coreutils curl findutils gcc gcc-c++ gpg2 grep jq make procps sed sudo tar util-linux wget xz; zypper clean --all; fi; usermod -aG sudo "${USERNAME}" 2>/dev/null || true; echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # buildkit
# 2026-10-05 21:20:43 0.00B 指定运行容器时使用的用户
USER root
# 2026-10-05 21:20:43 0.00B 定义构建参数
ARG INSTALL_CAPABILITIES
# 2026-10-05 21:20:43 0.00B 定义构建参数
ARG USERNAME
# 2026-10-05 21:20:43 0.00B 声明容器运行时监听的端口
EXPOSE map[8000/tcp:{}]
# 2026-10-05 21:20:43 0.00B 设置环境变量 OH_ACP_SKILL_SOURCING
ENV OH_ACP_SKILL_SOURCING=openhands_managed
# 2026-10-05 21:20:43 0.00B 设置环境变量 LOG_JSON
ENV LOG_JSON=true
# 2026-10-05 21:20:43 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-10-05 21:20:43 0.00B 设置环境变量 LC_ALL
ENV LC_ALL=C.UTF-8
# 2026-10-05 21:20:43 0.00B 设置工作目录为/
WORKDIR /
# 2026-10-05 21:20:43 0.00B 指定运行容器时使用的用户
USER openhands
# 2026-10-05 21:20:43 49.00B 执行命令并创建新的镜像层
RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=54daf056bd863bb46f922a2fe9324dd736b37ff6 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.53.0 /bin/sh -c mkdir -p /etc/claude-code && echo '{"permissions":{"allow":["Edit","Read","Bash"]}}' > /etc/claude-code/managed-settings.json # buildkit
# 2026-10-05 21:20:43 0.00B 执行命令并创建新的镜像层
RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=54daf056bd863bb46f922a2fe9324dd736b37ff6 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.53.0 /bin/sh -c if ! "$ACP_NODE_DIR/bin/node" --version >/dev/null 2>&1; then echo "Warning: ACP Node 22 runtime is not compatible with this base image (likely older glibc or musl libc); ACP agents will not be available" >&2; if [ -f "$ACP_NODE_DIR/acp-wrappers.txt" ]; then while read -r bin; do rm -f "/usr/local/bin/$bin"; done < "$ACP_NODE_DIR/acp-wrappers.txt"; fi; rm -rf "$ACP_NODE_DIR"/*; fi # buildkit
# 2026-10-05 21:20:43 223.00B 复制新文件或目录到容器中
COPY /opt/acp-wrappers/. /usr/local/bin/ # buildkit
# 2026-10-05 21:20:43 1.02GB 复制新文件或目录到容器中
COPY /acp-node /acp-node # buildkit
# 2026-10-05 21:20:24 0.00B 设置环境变量 ACP_NODE_DIR
ENV ACP_NODE_DIR=/acp-node
# 2026-10-05 21:20:24 101.27MB 执行命令并创建新的镜像层
RUN |6 USERNAME=openhands UID=10001 GID=10001 PORT=8000 OPENHANDS_BUILD_GIT_SHA=54daf056bd863bb46f922a2fe9324dd736b37ff6 OPENHANDS_BUILD_GIT_REF=refs/tags/v1.53.0 /bin/sh -c set -eux; if command -v apt-get >/dev/null 2>&1; then apt-get -o Acquire::Retries=5 update; apt-get -o Acquire::Retries=5 install -y --no-install-recommends bash ca-certificates git tini tmux; rm -rf /var/lib/apt/lists/*; elif command -v apk >/dev/null 2>&1; then apk add --no-cache bash ca-certificates git shadow tini tmux; elif command -v microdnf >/dev/null 2>&1; then microdnf install -y bash ca-certificates curl git shadow-utils tmux; microdnf clean all; elif command -v dnf >/dev/null 2>&1; then dnf install -y bash ca-certificates curl git shadow-utils tmux; dnf clean all; elif command -v yum >/dev/null 2>&1; then yum install -y bash ca-certificates curl git shadow-utils tmux; yum clean all; elif command -v zypper >/dev/null 2>&1; then zypper --non-interactive install --no-recommends bash ca-certificates curl git shadow tmux; zypper clean --all; else echo "Unsupported base image: no known package manager found" >&2; exit 1; fi; if ! command -v tini >/dev/null 2>&1; then ARCH=$(uname -m); case "$ARCH" in x86_64|amd64) TARCH=amd64; TINI_SHA256=c5b0666b4cb676901f90dfcb37106783c5fe2077b04590973b885950611b30ee;; aarch64|arm64) TARCH=arm64; TINI_SHA256=eae1d3aa50c48fb23b8cbdf4e369d0910dfc538566bfd09df89a774aa84a48b9;; *) echo "Unsupported architecture for tini: '$ARCH'" >&2; exit 1;; esac; curl -fsSL --retry 5 --retry-delay 2 --retry-connrefused "https://github.com/krallin/tini/releases/download/v0.19.0/tini-static-${TARCH}" -o /usr/local/bin/tini; echo "$TINI_SHA256 /usr/local/bin/tini" | sha256sum -c -; chmod 755 /usr/local/bin/tini; fi; tini --version; grep -Eq "^[^:]*:[^:]*:${GID}:" /etc/group || groupadd -g "${GID}" "${USERNAME}"; grep -Eq "^${USERNAME}:" /etc/passwd || useradd -m -u "${UID}" -g "${GID}" -s /bin/bash "${USERNAME}"; mkdir -p /workspace/project; chown -R "${USERNAME}:${USERNAME}" /workspace # buildkit
# 2026-10-05 21:20:12 0.00B 设置环境变量 OPENHANDS_BUILD_GIT_REF
ENV OPENHANDS_BUILD_GIT_REF=refs/tags/v1.53.0
# 2026-10-05 21:20:12 0.00B 设置环境变量 OPENHANDS_BUILD_GIT_SHA
ENV OPENHANDS_BUILD_GIT_SHA=54daf056bd863bb46f922a2fe9324dd736b37ff6
# 2026-10-05 21:20:12 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_REF=unknown
# 2026-10-05 21:20:12 0.00B 定义构建参数
ARG OPENHANDS_BUILD_GIT_SHA=unknown
# 2026-10-05 21:20:12 0.00B 定义构建参数
ARG USERNAME UID GID PORT
# 2026-10-05 21:20:12 4.62MB 执行命令并创建新的镜像层
RUN |2 NPM_VERSION=11.19.1 DEBIAN_SNAPSHOT=20260920T000000Z /bin/sh -c set -eux; ln -sfn ../lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm; ln -sfn ../lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx; ln -sfn ../lib/node_modules/corepack/dist/corepack.js /usr/local/bin/corepack; printf '%s\n' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian/${DEBIAN_SNAPSHOT}/" 'Suites: trixie' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' '' 'Types: deb' "URIs: http://snapshot.debian.org/archive/debian-security/${DEBIAN_SNAPSHOT}/" 'Suites: trixie-security' 'Components: main' 'Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg' 'Check-Valid-Until: no' > /etc/apt/sources.list.d/debian.sources; apt-get update; apt-get upgrade -y; apt-get install -y --no-install-recommends ca-certificates libbz2-1.0 libdb5.3t64 libffi8 libgcc-s1 libgdbm6t64 liblzma5 libncursesw6 libreadline8t64 libsqlite3-0 libssl3t64 libstdc++6 libtinfo6 libuuid1 libzstd1 netbase tzdata zlib1g; rm -rf /var/lib/apt/lists/*; python3 --version; node --version; npm --version # buildkit
# 2026-10-05 21:19:58 44.89MB 执行命令并创建新的镜像层
RUN |2 NPM_VERSION=11.19.1 DEBIAN_SNAPSHOT=20260920T000000Z /bin/sh -c node /usr/local/lib/node_modules/npm/bin/npm-cli.js install --global "npm@${NPM_VERSION}" # buildkit
# 2026-10-05 21:19:51 12.79MB 复制新文件或目录到容器中
COPY /usr/local/lib/node_modules /usr/local/lib/node_modules # buildkit
# 2026-10-05 21:19:51 126.60MB 复制新文件或目录到容器中
COPY /usr/local/bin/node /usr/local/bin/node # buildkit
# 2026-10-05 21:19:50 32.36MB 复制新文件或目录到容器中
COPY /usr/local /usr/local # buildkit
# 2026-10-05 21:19:50 0.00B 定义构建参数
ARG DEBIAN_SNAPSHOT=20260920T000000Z
# 2026-10-05 21:19:50 0.00B 定义构建参数
ARG NPM_VERSION
# 2026-09-18 08:00:00 78.81MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1789689600'
镜像信息
{
"Id": "sha256:1280ac7b320d5c56daa9c83db63bfa18380cfe16390b7fc3823fd14b8385d2db",
"RepoTags": [
"ghcr.io/openhands/agent-canvas:1.26.0",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openhands/agent-canvas:1.26.0"
],
"RepoDigests": [
"ghcr.io/openhands/agent-canvas@sha256:ce4526401c08b47d74fd0be5ebf97e8219d6a02955cb6710e8cc3335f01291a6",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/openhands/agent-canvas@sha256:8c4811e06c944ccf9eb94f6dfb2e8318eb15dd776a25ec5401b5b631737ce54f"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-10-08T20:37:24.937626268Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "openhands",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"OPENHANDS_BUILD_GIT_SHA=54daf056bd863bb46f922a2fe9324dd736b37ff6",
"OPENHANDS_BUILD_GIT_REF=refs/tags/v1.53.0",
"ACP_NODE_DIR=/acp-node",
"LC_ALL=C.UTF-8",
"LANG=C.UTF-8",
"LOG_JSON=true",
"OH_ACP_SKILL_SOURCING=openhands_managed",
"EDITOR=code",
"VISUAL=code",
"GIT_EDITOR=code --wait",
"OPENVSCODE_SERVER_ROOT=/openhands/.openvscode-server",
"CHROME_BIN=/usr/bin/chromium",
"PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium",
"CHROMIUM_FLAGS=--no-sandbox --disable-dev-shm-usage --disable-gpu",
"LD_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu:/usr/lib:/usr/lib/x86_64-linux-gnu:",
"AGENT_CANVAS_BUILD_GIT_SHA=3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2",
"AGENT_CANVAS_BUILD_GIT_REF=refs/tags/v1.26.0",
"AGENT_CANVAS_BASE_PATH=/canvas",
"VITE_POSTHOG_API_KEY=phc_BgzfxKdgsYMLFTmJqt424ZoyVHvKFfrwttLimzdYTKFK"
],
"Cmd": null,
"Image": "",
"Volumes": {
"/home/openhands/.openhands": {},
"/projects": {}
},
"WorkingDir": "/",
"Entrypoint": [
"tini",
"--",
"/opt/agent-canvas/entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"org.opencontainers.image.description": "All-in-one agent-canvas: Agent Server + Automation + Frontend",
"org.opencontainers.image.revision": "3500d9e5c7cbdfb5a2cbfe9499ce4448eb10c0a2",
"org.opencontainers.image.source": "https://github.com/OpenHands/OpenHands",
"org.opencontainers.image.title": "agent-canvas",
"org.opencontainers.image.version": "1.26.0"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 4303491470,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/f918b45d9ffa209de82ac3204f6d0ab75501ee5ae5880c3e90f5ffdeecde97e8/diff:/var/lib/docker/overlay2/1aa6f73d671eab9197fdf52e252a4da2aeb0d3cd48ae175b245e66f4c07fb0d8/diff:/var/lib/docker/overlay2/a85800b2505b43f9fc9feea06cf1257f561b1da8015276e696d5461419c651ff/diff:/var/lib/docker/overlay2/a0f70165702d1bf0ecf4c16e1e65fbb29d87eddad0a17ac7a6d43d5dc9635739/diff:/var/lib/docker/overlay2/5e64a537b8f11e6dc6673e0fe1a654998d59ca3bfb7ec86a967f95cfe3cce475/diff:/var/lib/docker/overlay2/0df44d9839fd8b7faa61bc79002cbe34822e6532657df8ad7a979dadeaa5454e/diff:/var/lib/docker/overlay2/cb58866157ea66ec61eb011bf9e7ffcbdedbf2c58c588379daff25d87d07e72e/diff:/var/lib/docker/overlay2/df1f610e141364af6260e13514f348e0c49e0a4a65395b1728b83a3fc38e5233/diff:/var/lib/docker/overlay2/74e9acac7e0e415faff4503e7a9fe161c55ffd97b2980c992526a72879f14076/diff:/var/lib/docker/overlay2/e6e9ea495d8d968c0facf9c18666f34508d64cdf66a454b111e32fa7a4746d16/diff:/var/lib/docker/overlay2/0e17ba8f2e494e9872417db12aa0124224715834a4eee0ba8ddf88406afc2d07/diff:/var/lib/docker/overlay2/09e9436ff6b18bf05674eab63506b640819909e5d4d686f1e8c3ae638205d4e2/diff:/var/lib/docker/overlay2/41a219cb9fdffec9cf37245c2b241b65016e3ba4312bc390af8b0f27e10c1a10/diff:/var/lib/docker/overlay2/cb00937624f19d2c4068a7d9d4236bfbe05fc595a8b2f77b0e03f3c0f66b114b/diff:/var/lib/docker/overlay2/adf5ec597b5f2401cdca68511a635593f7b8c1377cbea7911267e89960b10d74/diff:/var/lib/docker/overlay2/19ab95fdca72fa700e96ee7a8e9c4ae0b1fe67dd23f5847cda2c457762b3f012/diff:/var/lib/docker/overlay2/1be3dfba7e7697b2c144eafe90434a4ea79e0fd6c877aa166e3eaac1e2f12a62/diff:/var/lib/docker/overlay2/a353a9da78bc97d01b92613026b61d2cc1dc9426d3b9098cd20e01df5202cbc2/diff:/var/lib/docker/overlay2/5f953208fe53ede52ec35abf95ba2ba71ef9e94f639bf65ccbeb9a9d7b9da05d/diff:/var/lib/docker/overlay2/9c79bb59d2e8e0f5244e1ed9888e34a43fb491e947a6e7d95148b1e71cba71bf/diff:/var/lib/docker/overlay2/be6c18ca6c70182fa6cc51ca29d393f6f253d71258fe5b0c60c9a8d75de3f5f9/diff:/var/lib/docker/overlay2/424ebabb60a70ed9e6b40176fb02d66db04bfcd4b41c940290874db8c5a3b44a/diff:/var/lib/docker/overlay2/226b7dc96a747b8b773408304100a66ba2810d8471831ff578f5ae11544e6393/diff:/var/lib/docker/overlay2/4d1fe89c6cecde90b37c1627fbe7e15fed7e15d27d192f09d0d4667fa236c673/diff:/var/lib/docker/overlay2/930dbe9a8b1e7e49060f6e9358727cf5bbcd922aaa9711dc7e71e60ab4a396fa/diff:/var/lib/docker/overlay2/2d1eb6039761a056552fd540eeeaf530af6336265b744fa4bd915edc543c3e85/diff:/var/lib/docker/overlay2/2f7a0ce898505ac038e932b764be1cd8fee0f25e65862860169b3f71feff269d/diff:/var/lib/docker/overlay2/7158e1e65f9f431a3f8163970c909dcebb67018608f1b39bd46120a6eabc6a39/diff:/var/lib/docker/overlay2/26a95e5fa9de2829e74eadb8be62539aa7bf648e7f5567f48de360ea66d74ba4/diff:/var/lib/docker/overlay2/c483900dcf84b7f9e7427bfdaaf088b150d6c93fd4a171064fbed6ff7b943b5d/diff:/var/lib/docker/overlay2/0fc1b26574c52d8414f8648e01b462ef068fdab2839adbdc34729643046a0765/diff:/var/lib/docker/overlay2/83b32464b7eb79d8d00752c2dd84f13632ad79c19d491ab9290aee7a5c8edb75/diff:/var/lib/docker/overlay2/b9dd8af25b55dd56891fafc3cc93a8bc36b35a8baf8609fa49eef5b4a780af1a/diff:/var/lib/docker/overlay2/2fb7ce004496aa57887a4800fc8ba85a26512b20ec063469b9737274f4f31104/diff:/var/lib/docker/overlay2/287a88ff0199c9e7d43be856b4cdfdbb3d3c77c119f352f2a6b56e28b5fabd12/diff:/var/lib/docker/overlay2/3129928f521fbbc1ebf42a71bc761516acad2cb65cd9a9d20baf5abea70c1793/diff:/var/lib/docker/overlay2/9c31b11eacb9d263bf52b7d9c0b68071ce92668f3425b2cef27bb5aae35a3b31/diff:/var/lib/docker/overlay2/0a54ab216a0bfe377756c5ffaeb38009fe74e9c0fd29729892c12e08f9ef4057/diff",
"MergedDir": "/var/lib/docker/overlay2/28b25698c3f16e963fbaca955c24c864aa1e88ecc5efc80584bb27515da12b26/merged",
"UpperDir": "/var/lib/docker/overlay2/28b25698c3f16e963fbaca955c24c864aa1e88ecc5efc80584bb27515da12b26/diff",
"WorkDir": "/var/lib/docker/overlay2/28b25698c3f16e963fbaca955c24c864aa1e88ecc5efc80584bb27515da12b26/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:a6dc765193a52cbaede3c93a9ff48b9540948dd0774bbe7031fcb5847606f9ac",
"sha256:93599266bc4cb5605791a51a366d84285ddb00d5b8953f83729830903d6fefa5",
"sha256:d36a1fbc06fe676e2d9d4a4a899f4516b75fc44727aa376d32e564c9a0f6a6de",
"sha256:9edf5b5130f3ebd38e6372b773db28b671862c3324141c3d2172294510f11fef",
"sha256:abbb52709ba85bd440e243236626b3a5d6bb1d4fbf9ed6bb5dfe511f9b25f9be",
"sha256:20db8c3c69b0438bcc12c5743be0ba04117ed9183898f09e974e2192514c886b",
"sha256:6e58461bd228765cbf845d9e522a53d879acc65dfde59dca4ef2832bc7881256",
"sha256:0ac065bf4e08377ade3959dde628beac68da74be56507331d8f84c63ad0f8789",
"sha256:e83a839a1ea2d311b9b452d4bba3f9eff26088f65787e0cdeeb85f2ced1126b5",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:07e361610d5c4d2de6f113c622449712e499784758699f5f76dc125786b310a1",
"sha256:35d91e33406034dc6796ec9ade3a1bbd57bbd547264ffa8cb5f5daba26039c18",
"sha256:1ff172939ab9e273e3102452c66d44c2947cc9234f6e16ecd928a545242ef403",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:c6ba6ebd8e68b34dd8b82ebf16811ed1da2690f5eaffac50f129c11e00ed15f6",
"sha256:b48e116293199bba33d05c287a06ac04b84c8b7eef6668bdf78181b0a8b74a9f",
"sha256:18f64bbe525cf9d493d22205554b2f3d677c3693da0e2d39d802127f61280cca",
"sha256:64565a18289e4ef7f0c0fe354a1df114ff1376004c89db16564396e907d68e7f",
"sha256:c7e260c965640689d677f7c6851261cfce1ae8052dbda2cff8e812da78bb81a9",
"sha256:52e8ce769b6dee41ee421834036dba2d3ef2d5f74bf3e14de9382a80696c3bf0",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:90c2720914724d50a2e6eda432a24b1423aa0774c2a2862750d47db309d1dffa",
"sha256:5bf6a0e7000950ad0753fe66acb83a11781ac5757a3fe2cb30f8a1bef4bf6508",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:d97f1e2b1d0fc84fa0bb1b443993c2ea0e2d24c066132f0ad28b0fdfc2475254",
"sha256:442bf27dfcecf126973ec47f1ff00456cc514194c43a474de4ce6106eb8632b0",
"sha256:1b02f60cbe522fb6ded3f025fc55001865d792b30c0e5573cc349d115a859a1b",
"sha256:44359cb7dbe3e848f5f60c2f918aa5ad531e139415d463c8103c5121683f29c1",
"sha256:2bf552e1dc3139cd1df092ab1de610ed758d4baa81343a052b61592f63f84b33",
"sha256:e2618b4c1188da631b3b415f0e8fbca474c32effb70339de6bd594f9497477d1",
"sha256:d84fd4dc333c42f4d09755753cbcbbe9efd4913ba3cd3e043da61b31108b8357",
"sha256:9accc028ed617be7b5d2c969a20b40b17db324eecaf8b5439e7d35385bbc5c00",
"sha256:a1c8c47988696e401f8a74792c8a26b78fb3bf08a82409389430cc2e9333c61d",
"sha256:0ac6e04d11dc7e50a4fe92cd88d126a0dc24427b5c43855bc0c3b0b498c07c35",
"sha256:7eb11f0adbfe8b50f2f2809cd1db5b16726b3357cef71a8000581d2be34a7c3b",
"sha256:d3d15da1262814a4001496216e03088c5a7fd071cf42f446cc83564d8eb1679d",
"sha256:b7462f107c76e1f6cdaef28e3e69a9a9be8c282c81d9c04d39893e3d2ddc04fb",
"sha256:77a96f1374a2fe5635f9fac1aa296f964b682a2f37754ec6aa55b6d5b953860b",
"sha256:358ca099d937ba8257a933126fa4ea8a155e25e35e1bea1afc27a62ef3454dda"
]
},
"Metadata": {
"LastTagTime": "2026-10-09T20:22:07.079475132+08:00"
}
}