ℹ️
注意:这是一个 latest 标签镜像

latest 并不代表最新版本,本站同步时间存在延迟,无法保证此镜像与上游最新版本一致。
生产环境建议使用明确的版本号(如 v1.2.3),避免因版本不一致导致问题。 了解更多 →

logo
ghcr.io/misaka-link/deepseek-harness-docker:latest
linux/amd64 ghcr.io H0ly:) 贡献
14
浏览次数
3.30GB
镜像大小
国内镜像
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest
源镜像
ghcr.io/misaka-link/deepseek-harness-docker:latest
镜像ID
sha256:667ecd80e9c23cb146bded7a78705b3b9fdc174aec0c6aaf85584b402b5bbacc
镜像 TAG
latest
镜像大小
3.30GB
平台架构
linux/amd64
镜像源
ghcr.io
CMD
启动入口
/app/scripts/entrypoint.sh
工作目录
/workspace
OS/平台
linux/amd64
镜像创建
2026-10-24T10:07:34.942060182Z
同步时间
2026-10-27 21:18
浏览量
14 次
贡献者
avatar H0ly:)
🔌 开放端口 1
3080/tcp
📁 目录挂载 4
 /root/.config/chromium  /root/.dsh  /root/.dsh-snapshots  /workspace
⚙️ 环境变量 15
KeyValue
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 0
NODE_VERSION=24.22.1 1
YARN_VERSION=1.22.22 2
DEBIAN_FRONTEND=noninteractive 3
DSH_VARIANT=full 4
DSH_INSTALL_DIR=/usr/local 5
DSH_WORKSPACE=/workspace 6
PROXY_PORT=3080 7
DSH_PORT=3079 8
VNC_PORT=6080 9
NOVNC_ASSET_REVISION=1.6.0 10
DISPLAY=:99 11
LANG=zh_CN.UTF-8 12
LANGUAGE=zh_CN:zh 13
LC_ALL=zh_CN.UTF-8 14
🏷️ 镜像标签 3
KeyValue
Production Docker image for DeepSeek Harness with Container Browser, VNC, and Aesthetic Auth Gateway description
DeepSeek Harness Community maintainer
full org.opencontainers.image.variant

Docker拉取命令

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest  ghcr.io/misaka-link/deepseek-harness-docker:latest

Containerd拉取命令

ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest
ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest  ghcr.io/misaka-link/deepseek-harness-docker:latest

Shell快速替换命令

sed -i 's#ghcr.io/misaka-link/deepseek-harness-docker:latest#swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest#' deployment.yaml

Ansible快速分发-Docker

#ansible k8s -m shell -a 'docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest && docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest  ghcr.io/misaka-link/deepseek-harness-docker:latest'

Ansible快速分发-Containerd

#ansible k8s -m shell -a 'ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest && ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest  ghcr.io/misaka-link/deepseek-harness-docker:latest'

镜像构建历史


# 2026-10-24 18:07:34  0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/app/scripts/entrypoint.sh"]
                        
# 2026-10-24 18:07:34  0.00B 指定检查容器健康状态的命令
HEALTHCHECK {Test:[CMD-SHELL curl -fsS http://127.0.0.1:3080/healthz || exit 1] Interval:30s Timeout:5s StartPeriod:2m0s StartInterval:0s Retries:3}
                        
# 2026-10-24 18:07:34  0.00B 声明容器运行时监听的端口
EXPOSE [3080/tcp]
                        
# 2026-10-24 18:07:34  0.00B 创建挂载点用于持久化数据或共享数据
VOLUME [/root/.dsh /root/.dsh-snapshots /workspace /root/.config/chromium]
                        
# 2026-10-24 18:07:34  0.00B 设置工作目录为/workspace
WORKDIR /workspace
                        
# 2026-10-24 18:07:34  2.00MB 执行命令并创建新的镜像层
RUN |7 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 GO_VERSION= /bin/sh -c set -eux;     cd /app/gateway && npm install --omit=dev;     npm cache clean --force && rm -rf /root/.npm /root/.cache/node-gyp;     chmod +x /app/scripts/*.sh /app/scripts/*.mjs 2>/dev/null || true;     chmod +x /app/scripts/entrypoint.sh;     if [ "$INSTALL_DESKTOP" = "1" ]; then       chmod +x /app/scripts/chromium-docker;       ln -sf /app/scripts/chromium-docker /usr/local/bin/chromium-docker;     fi;     npm config set registry https://registry.npmmirror.com 2>/dev/null || true;     which pnpm >/dev/null 2>&1 && pnpm config set registry https://registry.npmmirror.com 2>/dev/null || true # buildkit
                        
# 2026-10-24 18:07:33  0.00B 执行命令并创建新的镜像层
RUN |7 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 GO_VERSION= /bin/sh -c set -eux;     if [ -f /app/scripts/prune-runtime-deps.mjs ]; then       echo "===> 执行运行时依赖精简 (level=${PRUNE_LEVEL})...";       node /app/scripts/prune-runtime-deps.mjs --root /usr/local/lib/node_modules --level "${PRUNE_LEVEL}";     else       echo "===> 提示: /app/scripts/prune-runtime-deps.mjs 暂不存在,跳过脚本瘦身";     fi;     if [ "${PRUNE_LEVEL}" = "mini" ] || [ "${VARIANT}" = "mini" ]; then       echo "===> mini 变体:移除 Node C/C++ 编译头文件 (/usr/local/include/node)";       rm -rf /usr/local/include/node;     fi;     find /usr/local/lib/node_modules -name "spawn-helper" -exec chmod 0755 {} + 2>/dev/null || true;     find /usr/local/lib/node_modules -name "ensure-spawn-helper.mjs" -exec node {} + 2>/dev/null || true # buildkit
                        
# 2026-10-24 18:07:33  37.96KB 执行命令并创建新的镜像层
RUN |7 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 GO_VERSION= /bin/sh -c for p in /app/plugins/*/; do       [ -d "$p" ] || continue;       mkdir -p "${p}node_modules/@deepseek-ai";       for d in /usr/local/lib/node_modules/@deepseek-ai/*; do         [ -e "$d" ] || continue;         n=$(basename "$d");         if [ "$n" != "dsh" ] && [ ! -e "${p}node_modules/@deepseek-ai/$n" ]; then           ln -s "$d" "${p}node_modules/@deepseek-ai/$n";         fi;       done;     done     && ls -l /app/plugins/*/node_modules/@deepseek-ai/ 2>/dev/null | head -20 || true # buildkit
                        
# 2026-10-24 18:07:32  0.00B 执行命令并创建新的镜像层
RUN |7 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 GO_VERSION= /bin/sh -c if [ "$INSTALL_DESKTOP" != "1" ]; then rm -rf /app/plugins/dsh-browser-desktop; fi # buildkit
                        
# 2026-10-24 18:07:32  115.80KB 复制新文件或目录到容器中
COPY plugins/ /app/plugins/ # buildkit
                        
# 2026-10-24 18:07:32  679.73KB 复制新文件或目录到容器中
COPY gateway/ /app/gateway/ # buildkit
                        
# 2026-10-24 18:07:32  362.19KB 复制新文件或目录到容器中
COPY scripts/ /app/scripts/ # buildkit
                        
# 2026-10-24 18:07:32  32.62KB 复制新文件或目录到容器中
COPY version.json /app/version.json # buildkit
                        
# 2026-10-24 18:07:32  2.37KB 复制新文件或目录到容器中
COPY plugins.market.list /app/plugins.market.list # buildkit
                        
# 2026-10-24 18:07:32  9.99KB 执行命令并创建新的镜像层
RUN |7 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 GO_VERSION= /bin/sh -c set -eux;     getent group dsh >/dev/null || groupadd -g 1001 dsh || groupadd dsh;     getent passwd dsh >/dev/null || useradd -m -u 1001 -g dsh -s /bin/bash dsh || useradd -m -g dsh -s /bin/bash dsh;     mkdir -p /app/gateway /app/scripts /app/plugins /workspace /root/.dsh /root/.dsh-snapshots;     mkdir -p /home/dsh/.dsh /home/dsh/.dsh-snapshots /home/dsh/workspace;     if [ "$INSTALL_DESKTOP" = "1" ]; then       mkdir -p /root/.config/chromium /home/dsh/.config/chromium;     fi;     if [ "$INSTALL_GO" = "1" ]; then       mkdir -p /go;       chown -R dsh:dsh /go;     fi;     chown -R dsh:dsh /home/dsh;     chmod 0755 /home/dsh;     id dsh # buildkit
                        
# 2026-10-24 18:07:32  200.00B 执行命令并创建新的镜像层
RUN |7 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 GO_VERSION= /bin/sh -c set -eux;     ln -sf /usr/local/lib/node_modules/@deepseek-ai/dsh/lib/bin.js /usr/local/bin/dsh;     for b in pnpm pnpx pn pnx; do       if [ -e "/usr/local/lib/node_modules/pnpm/$b" ]; then         ln -sf "/usr/local/lib/node_modules/pnpm/$b" "/usr/local/bin/$b";       fi;     done;     find /usr/local/lib/node_modules -name "spawn-helper" -exec chmod 0755 {} + 2>/dev/null || true;     find /usr/local/lib/node_modules -name "ensure-spawn-helper.mjs" -exec node {} + 2>/dev/null || true;     dsh --version || node -e "console.log(require('/usr/local/lib/node_modules/@deepseek-ai/dsh/package.json').version)";     ARCH_TAG="$(node -p 'process.arch')";     test -d "/usr/local/lib/node_modules/@deepseek-ai/dsh/node_modules/@koromix/koffi-linux-${ARCH_TAG}"       || { echo "错误: 缺少当前架构 (linux-${ARCH_TAG}) 的原生包 @koromix/koffi-linux-${ARCH_TAG};请确认 npm 安装在目标架构上下文执行" >&2; exit 1; };     echo "===> 原生架构包自检通过: linux-${ARCH_TAG}" # buildkit
                        
# 2026-10-24 18:07:31  755.13MB 复制新文件或目录到容器中
COPY /usr/local/lib/node_modules /usr/local/lib/node_modules # buildkit
                        
# 2026-10-24 18:07:20  244.16MB 执行命令并创建新的镜像层
RUN |7 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 GO_VERSION= /bin/sh -c set -eux;     if [ "$INSTALL_GO" != "1" ]; then       echo "===> mini 变体:跳过 Go 工具链";     else       ARCH="$(dpkg --print-architecture)";       case "${ARCH}" in         amd64) GOARCH='amd64' ;;         arm64) GOARCH='arm64' ;;         armhf) GOARCH='armv6l' ;;         i386)  GOARCH='386' ;;         *) echo "不支持的架构: ${ARCH}"; exit 1 ;;       esac;       TARGET_VERSION="${GO_VERSION}";       if [ -z "${TARGET_VERSION}" ]; then         if [ "$USE_CHINA_MIRROR" = "1" ] || [ "$USE_CHINA_MIRROR" = "true" ]; then           TARGET_VERSION="$(curl -sSL https://golang.google.cn/VERSION?m=text 2>/dev/null | head -n 1 | tr -d '\r\n' || true)";         fi;         if [ -z "${TARGET_VERSION}" ]; then           TARGET_VERSION="$(curl -sSL https://go.dev/VERSION?m=text 2>/dev/null | head -n 1 | tr -d '\r\n' || echo 'go1.27.1')";         fi;       fi;       case "${TARGET_VERSION}" in go*) ;; *) TARGET_VERSION="go${TARGET_VERSION}" ;; esac;       echo "===> 正在安装最新 Golang 开发环境 (${TARGET_VERSION} for linux/${GOARCH})...";       GO_TARBALL="${TARGET_VERSION}.linux-${GOARCH}.tar.gz";       DOWNLOAD_SUCCESS=0;       if [ "$USE_CHINA_MIRROR" = "1" ] || [ "$USE_CHINA_MIRROR" = "true" ]; then         echo "===> 尝试从国内官方镜像源下载 Golang...";         if curl -sSL --fail --connect-timeout 10 --max-time 900 --retry 2 --retry-delay 3 "https://golang.google.cn/dl/${GO_TARBALL}" -o /tmp/go.tar.gz; then           DOWNLOAD_SUCCESS=1;         fi;       fi;       if [ "${DOWNLOAD_SUCCESS}" = "0" ]; then         echo "===> 从全球官方源下载 Golang...";         curl -sSL --fail --connect-timeout 10 --max-time 900 --retry 2 --retry-delay 3 "https://go.dev/dl/${GO_TARBALL}" -o /tmp/go.tar.gz;       fi;       tar -C /usr/local -xzf /tmp/go.tar.gz;       rm -f /tmp/go.tar.gz;       ln -sf /usr/local/go/bin/go /usr/local/bin/go;       ln -sf /usr/local/go/bin/gofmt /usr/local/bin/gofmt;       mkdir -p /go/src /go/bin /go/pkg /workspace;       chmod -R 0755 /go;       if [ "$USE_CHINA_MIRROR" = "1" ] || [ "$USE_CHINA_MIRROR" = "true" ]; then         /usr/local/go/bin/go env -w GOPROXY="https://goproxy.cn,direct";       fi;       printf 'export GOROOT=/usr/local/go\nexport GOPATH=/go\nexport PATH=$PATH:/usr/local/go/bin:/go/bin\n' > /etc/profile.d/go.sh;       go version;     fi # buildkit
                        
# 2026-10-24 18:07:16  0.00B 定义构建参数
ARG GO_VERSION=
                        
# 2026-10-24 18:07:16  2.53KB 执行命令并创建新的镜像层
RUN |6 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 /bin/sh -c chmod 0755 /usr/local/bin/wslpath /usr/local/bin/powershell.exe /usr/local/bin/dsh-editor.tcl # buildkit
                        
# 2026-10-24 18:07:16  1.89KB 执行命令并创建新的镜像层
RUN |6 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 /bin/sh -c cat > /usr/local/bin/dsh-editor.tcl <<'SHIM'
#!/usr/bin/wish
set target [lindex $argv 0]
if {$target eq ""} { exit }

if {[file isdirectory $target]} {
  wm title . "DSH Workspace: $target"
  wm geometry . 680x520
  listbox .lb -width 90 -height 30 -yscrollcommand {.vs set}
  scrollbar .vs -command {.lb yview}
  pack .lb -side left -fill both -expand true
  pack .vs -side right -fill y
  foreach f [lsort [glob -nocomplain -directory $target *]] {
    .lb insert end [file tail $f]
  }
  bind .lb <Double-Button-1> {
    set sel [lindex [.lb curselection] 0]
    if {$sel ne ""} {
      exec wish [info script] [file join $target [.lb get $sel]] &
    }
  }
  return
}

wm title . "DSH Config Editor: $target"
wm geometry . 900x640
frame .bar
button .bar.save -text "Save (Ctrl+S)" -command saveFile
button .bar.close -text "Close (Ctrl+W)" -command exit
label .bar.path -text $target -anchor w
pack .bar.save .bar.close -side left -padx 3 -pady 3
pack .bar.path -side left -fill x -expand true -padx 6
pack .bar -side top -fill x

text .txt -wrap word -undo true -yscrollcommand {.vs set} -font {TkFixedFont 11}
scrollbar .vs -command {.txt yview}
pack .txt -side left -fill both -expand true
pack .vs -side right -fill y

if {[catch {set fd [open $target r]; fconfigure $fd -encoding utf-8; set content [read $fd]; close $fd} err]} {
  tk_messageBox -message "Open failed: $err" -type ok -icon warning
  exit
}
.txt insert 1.0 $content
focus .txt

proc saveFile {} {
  global target
  if {[catch {
    set fd [open $target w]
    fconfigure $fd -encoding utf-8
    puts -nonewline $fd [.txt get 1.0 end-1c]
    close $fd
  } err]} {
    tk_messageBox -message "Save failed: $err" -type ok -icon error
    return
  }
  .bar.save configure -text "Saved ✓"
  after 1200 { .bar.save configure -text "Save (Ctrl+S)" }
}
bind .txt <Control-s> saveFile
bind .txt <Control-w> exit
bind . <Control-s> saveFile
bind . <Control-w> exit
SHIM # buildkit
                        
# 2026-10-24 18:07:16  501.00B 执行命令并创建新的镜像层
RUN |6 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 /bin/sh -c cat > /usr/local/bin/powershell.exe <<'SHIM'
#!/bin/sh
[ -x /usr/bin/wish ] || exit 0
command_text=""
for arg in "$@"; do
  case "$arg" in
    -NoProfile|-Command) ;;
    *) command_text="$arg" ;;
  esac
done
path=""
if [ -n "$command_text" ]; then
  path=$(printf '%s' "$command_text" \
    | sed -n "s/.*-LiteralPath[[:space:]]*'\([^']*\)'[[:space:]]*$/\1/p" \
    | sed "s/''/'/g")
fi
if [ -z "$path" ] || [ ! -e "$path" ]; then exit 0; fi
DISPLAY="${DISPLAY:-:99}" /usr/bin/wish /usr/local/bin/dsh-editor.tcl "$path" >/dev/null 2>&1 &
exit 0
SHIM # buildkit
                        
# 2026-10-24 18:07:16  141.00B 执行命令并创建新的镜像层
RUN |6 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 /bin/sh -c cat > /usr/local/bin/wslpath <<'SHIM'
#!/bin/sh
out=""
for arg in "$@"; do
  case "$arg" in
    -w|-u|-m|--*) ;;
    *) out="$arg" ;;
  esac
done
printf '%s\n' "${out:-/}"
exit 0
SHIM # buildkit
                        
# 2026-10-24 18:07:16  1.35MB 执行命令并创建新的镜像层
RUN |6 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 NOVNC_ASSET_REVISION=1.6.0 /bin/sh -c set -eux;     if [ "$INSTALL_DESKTOP" = "1" ]; then       novnc_copy="$(mktemp -d)";       cp -a /usr/share/novnc/. "${novnc_copy}/";       mkdir -p "/usr/share/novnc/novnc-${NOVNC_ASSET_REVISION}";       cp -a "${novnc_copy}/." "/usr/share/novnc/novnc-${NOVNC_ASSET_REVISION}/";       rm -rf "${novnc_copy}";       if [ ! -e /usr/share/novnc/index.html ]; then ln -s vnc.html /usr/share/novnc/index.html; fi;     else       echo "===> mini 变体:跳过 noVNC 静态资源版本化层";     fi # buildkit
                        
# 2026-10-24 18:07:16  0.00B 定义构建参数
ARG NOVNC_ASSET_REVISION=1.6.0
                        
# 2026-10-24 18:07:16  971.76MB 执行命令并创建新的镜像层
RUN |5 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 /bin/sh -c set -eux;     if [ "$INSTALL_DESKTOP" = "1" ]; then       apt-get update;       apt-get install -y --no-install-recommends         tk         xvfb         x11-utils         xdotool         scrot         openbox         x11vnc         novnc         websockify         chromium         fontconfig         fonts-wqy-zenhei         fonts-wqy-microhei         fonts-noto-color-emoji         fonts-symbola;       mkdir -p /etc/fonts;       printf '<?xml version="1.0"?>\n<!DOCTYPE fontconfig SYSTEM "fonts.dtd">\n<fontconfig>\n  <alias>\n    <family>sans-serif</family>\n    <prefer>\n      <family>WenQuanYi Zen Hei</family>\n      <family>Noto Color Emoji</family>\n      <family>Symbola</family>\n    </prefer>\n  </alias>\n  <alias>\n    <family>serif</family>\n    <prefer>\n      <family>WenQuanYi Zen Hei</family>\n      <family>Noto Color Emoji</family>\n      <family>Symbola</family>\n    </prefer>\n  </alias>\n  <alias>\n    <family>monospace</family>\n    <prefer>\n      <family>WenQuanYi Micro Hei Mono</family>\n      <family>Noto Color Emoji</family>\n      <family>Symbola</family>\n    </prefer>\n  </alias>\n  <alias>\n    <family>emoji</family>\n    <prefer>\n      <family>Noto Color Emoji</family>\n      <family>Symbola</family>\n    </prefer>\n  </alias>\n</fontconfig>\n' > /etc/fonts/local.conf;       fc-cache -f;       apt-get clean;       rm -rf /var/lib/apt/lists/*;     else       echo "===> mini 变体:跳过桌面与 Chromium 依赖,仅保留中文字体 (fonts-wqy-microhei)";       apt-get update;       apt-get install -y --no-install-recommends         fontconfig         fonts-wqy-microhei;       fc-cache -f;       apt-get clean;       rm -rf /var/lib/apt/lists/*;     fi # buildkit
                        
# 2026-10-24 18:06:18  42.82MB 执行命令并创建新的镜像层
RUN |5 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 /bin/sh -c set -eux;     if [ "${VARIANT}" = "mini" ]; then       echo "===> mini 变体:跳过 GitHub CLI (gh) 安装";     else       (curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg 2>/dev/null        && chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg        && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/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 --no-install-recommends gh)       || (ARCH=$(dpkg --print-architecture)           && curl -sSL "https://github.com/cli/cli/releases/download/v2.60.1/gh_2.60.1_linux_${ARCH}.tar.gz" -o /tmp/gh.tar.gz           && tar -C /tmp -xzf /tmp/gh.tar.gz           && mv /tmp/gh_*/bin/gh /usr/local/bin/gh           && rm -rf /tmp/gh*)       && apt-get clean && rm -rf /var/lib/apt/lists/*       && gh --version;     fi # buildkit
                        
# 2026-10-24 18:06:15  49.79MB 执行命令并创建新的镜像层
RUN |5 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 /bin/sh -c set -eux;     apt-get update;     apt-get install -y --no-install-recommends       bash       curl       wget       git       openssh-client       ca-certificates       procps       psmisc       iproute2       locales       python3       python-is-python3       file       jq       less       ripgrep       rsync       zip       unzip       p7zip-full       pigz       tzdata;     echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen;     locale-gen zh_CN.UTF-8;     apt-get clean;     rm -rf /var/lib/apt/lists/* # buildkit
                        
# 2026-10-24 18:06:07  0.00B 执行命令并创建新的镜像层
RUN |5 VARIANT=full INSTALL_DESKTOP=1 INSTALL_GO=1 PRUNE_LEVEL=full USE_CHINA_MIRROR=0 /bin/sh -c if [ "$USE_CHINA_MIRROR" = "1" ] || [ "$USE_CHINA_MIRROR" = "true" ]; then       sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources 2>/dev/null ||       sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list 2>/dev/null || true;       npm config set registry https://registry.npmmirror.com;     fi # buildkit
                        
# 2026-10-24 18:06:07  0.00B 定义构建参数
ARG USE_CHINA_MIRROR=0
                        
# 2026-10-24 18:06:07  0.00B 设置环境变量 DEBIAN_FRONTEND DSH_VARIANT DSH_INSTALL_DIR DSH_WORKSPACE PROXY_PORT DSH_PORT VNC_PORT NOVNC_ASSET_REVISION DISPLAY LANG LANGUAGE LC_ALL PATH
ENV DEBIAN_FRONTEND=noninteractive DSH_VARIANT=full DSH_INSTALL_DIR=/usr/local DSH_WORKSPACE=/workspace PROXY_PORT=3080 DSH_PORT=3079 VNC_PORT=6080 NOVNC_ASSET_REVISION=1.6.0 DISPLAY=:99 LANG=zh_CN.UTF-8 LANGUAGE=zh_CN:zh LC_ALL=zh_CN.UTF-8 PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
                        
# 2026-10-24 18:06:07  0.00B 添加元数据标签
LABEL org.opencontainers.image.variant=full
                        
# 2026-10-24 18:06:07  0.00B 添加元数据标签
LABEL description=Production Docker image for DeepSeek Harness with Container Browser, VNC, and Aesthetic Auth Gateway
                        
# 2026-10-24 18:06:07  0.00B 添加元数据标签
LABEL maintainer=DeepSeek Harness Community
                        
# 2026-10-24 18:06:07  0.00B 定义构建参数
ARG PRUNE_LEVEL=full
                        
# 2026-10-24 18:06:07  0.00B 定义构建参数
ARG INSTALL_GO=1
                        
# 2026-10-24 18:06:07  0.00B 定义构建参数
ARG INSTALL_DESKTOP=1
                        
# 2026-10-24 18:06:07  0.00B 定义构建参数
ARG VARIANT=full
                        
# 2026-10-21 19:35:23  0.00B 设置默认要执行的命令
CMD ["node"]
                        
# 2026-10-21 19:35:23  0.00B 配置容器启动时运行的命令
ENTRYPOINT ["docker-entrypoint.sh"]
                        
# 2026-10-21 19:35:23  388.00B 复制新文件或目录到容器中
COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
                        
# 2026-10-21 19:35:23  5.34MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -ex   && export GNUPGHOME="$(mktemp -d)"   && for key in     6A010C5166006599AA17F08146C2130DFD2497F5   ; do     { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ||     { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ;   done   && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz"   && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc"   && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz   && gpgconf --kill all   && rm -rf "$GNUPGHOME"   && mkdir -p /opt   && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/   && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn   && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg   && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz   && yarn --version   && rm -rf /tmp/* # buildkit
                        
# 2026-10-21 19:35:19  0.00B 设置环境变量 YARN_VERSION
ENV YARN_VERSION=1.22.22
                        
# 2026-10-21 19:35:19  201.76MB 执行命令并创建新的镜像层
RUN /bin/sh -c ARCH= && dpkgArch="$(dpkg --print-architecture)"   && case "${dpkgArch##*-}" in     amd64) ARCH='x64';;     ppc64el) ARCH='ppc64le';;     s390x) ARCH='s390x';;     arm64) ARCH='arm64';;     *) echo "unsupported architecture"; exit 1 ;;   esac   && export GNUPGHOME="$(mktemp -d)"   && set -ex   && for key in     5BE8A3F6C8A5C01D106C0AD820B1A390B168D356     DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7     CC68F5A3106FF448322E48ED27F5E38D5B0A215F     890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4     C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C     108F52B48DB57BB0CC439B2997B01419BD92F80A     655F3B5C1FB3FA8D1A0CA6BDE4A7D232B936D2FD     A363A499291CBBC940DD62E41F10027AF002F8B0   ; do       { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ||       { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ;   done   && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH.tar.xz"   && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc"   && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc   && gpgconf --kill all   && rm -rf "$GNUPGHOME"   && grep " node-v$NODE_VERSION-linux-$ARCH.tar.xz\$" SHASUMS256.txt | sha256sum -c -   && tar -xJf "node-v$NODE_VERSION-linux-$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner   && rm "node-v$NODE_VERSION-linux-$ARCH.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt   && ln -s /usr/local/bin/node /usr/local/bin/nodejs   && node --version   && npm --version   && rm -rf /tmp/* # buildkit
                        
# 2026-10-21 19:35:19  0.00B 设置环境变量 NODE_VERSION
ENV NODE_VERSION=24.22.1
                        
# 2026-10-21 19:34:53  8.94KB 执行命令并创建新的镜像层
RUN /bin/sh -c groupadd --gid 1000 node   && useradd --uid 1000 --gid node --shell /bin/bash --create-home node # buildkit
                        
# 2026-10-21 10:16:59  657.48MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -ex; 	apt-get update; 	apt-get install -y --no-install-recommends 		autoconf 		automake 		bzip2 		default-libmysqlclient-dev 		dpkg-dev 		file 		g++ 		gcc 		imagemagick 		libbz2-dev 		libc6-dev 		libcurl4-openssl-dev 		libdb-dev 		libevent-dev 		libffi-dev 		libgdbm-dev 		libglib2.0-dev 		libgmp-dev 		libjpeg-dev 		libkrb5-dev 		liblzma-dev 		libmagickcore-dev 		libmagickwand-dev 		libmaxminddb-dev 		libncurses5-dev 		libncursesw5-dev 		libpng-dev 		libpq-dev 		libreadline-dev 		libsqlite3-dev 		libssl-dev 		libtool 		libwebp-dev 		libxml2-dev 		libxslt-dev 		libyaml-dev 		make 		patch 		unzip 		xz-utils 		zlib1g-dev 	; 	apt-get dist-clean # buildkit
                        
# 2026-10-21 09:27:56  184.97MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; 	apt-get update; 	apt-get install -y --no-install-recommends 		git 		mercurial 		openssh-client 		subversion 				procps 	; 	apt-get dist-clean # buildkit
                        
# 2026-10-21 08:46:22  60.19MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; 	apt-get update; 	apt-get install -y --no-install-recommends 		ca-certificates 		curl 		gnupg 		netbase 		sq 		wget 	; 	apt-get dist-clean # buildkit
                        
# 2026-10-21 05:32:55  120.11MB 
# debian.sh --arch 'amd64' out/ 'trixie' '@1792531975'
                        
                    

镜像信息

{
    "Id": "sha256:667ecd80e9c23cb146bded7a78705b3b9fdc174aec0c6aaf85584b402b5bbacc",
    "RepoTags": [
        "ghcr.io/misaka-link/deepseek-harness-docker:latest",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker:latest"
    ],
    "RepoDigests": [
        "ghcr.io/misaka-link/deepseek-harness-docker@sha256:e1d3a9642db1f92ea288125f9f44df67811494f7abec6b29db3a5cc5d0ac6ebe",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/misaka-link/deepseek-harness-docker@sha256:5d423936c7c284d7916a7f54037d76e14bd189916e20f0a4fcf30e70565d2662"
    ],
    "Parent": "",
    "Comment": "buildkit.dockerfile.v0",
    "Created": "2026-10-24T10:07:34.942060182Z",
    "Container": "",
    "ContainerConfig": null,
    "DockerVersion": "",
    "Author": "",
    "Config": {
        "Hostname": "",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "3080/tcp": {}
        },
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin",
            "NODE_VERSION=24.22.1",
            "YARN_VERSION=1.22.22",
            "DEBIAN_FRONTEND=noninteractive",
            "DSH_VARIANT=full",
            "DSH_INSTALL_DIR=/usr/local",
            "DSH_WORKSPACE=/workspace",
            "PROXY_PORT=3080",
            "DSH_PORT=3079",
            "VNC_PORT=6080",
            "NOVNC_ASSET_REVISION=1.6.0",
            "DISPLAY=:99",
            "LANG=zh_CN.UTF-8",
            "LANGUAGE=zh_CN:zh",
            "LC_ALL=zh_CN.UTF-8"
        ],
        "Cmd": null,
        "Healthcheck": {
            "Test": [
                "CMD-SHELL",
                "curl -fsS http://127.0.0.1:3080/healthz || exit 1"
            ],
            "Interval": 30000000000,
            "Timeout": 5000000000,
            "StartPeriod": 120000000000,
            "Retries": 3
        },
        "Image": "",
        "Volumes": {
            "/root/.config/chromium": {},
            "/root/.dsh": {},
            "/root/.dsh-snapshots": {},
            "/workspace": {}
        },
        "WorkingDir": "/workspace",
        "Entrypoint": [
            "/app/scripts/entrypoint.sh"
        ],
        "OnBuild": null,
        "Labels": {
            "description": "Production Docker image for DeepSeek Harness with Container Browser, VNC, and Aesthetic Auth Gateway",
            "maintainer": "DeepSeek Harness Community",
            "org.opencontainers.image.variant": "full"
        }
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 3298103126,
    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/f9c642b4171a2bb2139f1ae9509da161c7821ac360a960ca199cb66440571fa7/diff:/var/lib/docker/overlay2/7d090b29acf64a4f14a79442345710a53fd8ea256eef04683f731ae1d3e76339/diff:/var/lib/docker/overlay2/135bced4fe191039e9fa390b299372d5a6bc2716a7b286330c86f8c908fdef5a/diff:/var/lib/docker/overlay2/5ecf6e7c402cbeb75b7767e330a759b4d44905ce1494891e775d3b716a200b3a/diff:/var/lib/docker/overlay2/0e92e6de577564403620797870d8187346a32ade430e52e0ecfb5ffa1768d4fd/diff:/var/lib/docker/overlay2/60216e13b56ad562f44a8ddef6f1b3e0487c7987f8995d0bc55b7185c68fd0d9/diff:/var/lib/docker/overlay2/7d59e29b9502b11d78ac6aab6a5d7eb9baf399613e77fd22594ea689107a039a/diff:/var/lib/docker/overlay2/6f24fcfda97c9e71092e9cfaf2e50fd47c3297d7984afed152245a11ee238baa/diff:/var/lib/docker/overlay2/b0c03789b6d484872d5a13a672bd010d8dc8756677ce9992e6a408b2485dc2bc/diff:/var/lib/docker/overlay2/6513f5fc9224c9a3603edcfb0f02cf3e770d14ba915ffcff936c4061014662e3/diff:/var/lib/docker/overlay2/d45c7d9188944778d9acfb088585ac697adb3316270692add9b44c8cc7753941/diff:/var/lib/docker/overlay2/7c1a37dfdb39649d8d4e6c85ef7c0b6df97271ae54ff1d835a3be7d067ade615/diff:/var/lib/docker/overlay2/03ac68dfc163253cc3db999af95038add20e6bc19e701b08a9166069d202d8e0/diff:/var/lib/docker/overlay2/4fdb0db7c777379d34a6ed7c0ec3d14bbdd03b374ee0fc9006895eaa456b18b6/diff:/var/lib/docker/overlay2/128b8397710d6a1de83a0061ca4ca66c2cfca3ae9d253e95cef932ebeec360bf/diff:/var/lib/docker/overlay2/1db974ce099c51a890ec4e415b51542179190c513dd6aaecac6a5b8e89eeffc1/diff:/var/lib/docker/overlay2/93b597f4820e5e969c1b553709091e254120c9903d9ba5c38869f928d3b98f2c/diff:/var/lib/docker/overlay2/3d08be44624bffae8c3697e3e0cd2a2f319b2e8f34dd31cfa4844cf7cbc21567/diff:/var/lib/docker/overlay2/5d15476001f03caca34e639340a3d79303d1847a732f68118f8124b18e905434/diff:/var/lib/docker/overlay2/f4c1953dac1ed9126d450330ce91d5bd884a8d917d8a6604543c06770ca58c5d/diff:/var/lib/docker/overlay2/0761811a5dd7647d9c46f387bd5459597b04b6401b9edb3d178187dcda298fce/diff:/var/lib/docker/overlay2/db71a4e7e1abfad106ce8c82acf27b37d1caa4669f8ef5119df01e3594dfb6aa/diff:/var/lib/docker/overlay2/448aced849feec6005bbb1a302a9f141026db81b840e430ffa8f59431e0a8af9/diff:/var/lib/docker/overlay2/d3f2a2190d84c81e72c60840bce5c410b244d695a51df06d61d50d729b610e5e/diff:/var/lib/docker/overlay2/69070bf0d66ed2f7f5501ef52e2cd7702f34cbcdef28871885637b4f7a3cb306/diff:/var/lib/docker/overlay2/6fdf7f9dfe62253faab985212b7ecc9b165e0a5f519c9000e3b2c593dfa04e02/diff:/var/lib/docker/overlay2/8d844c0595701bc3eefdddaa7fb36d625c09281853eb1fe51673c8fe87a05da8/diff:/var/lib/docker/overlay2/52ff66ecdecb0edff946612c5fad2a73b843b0e124de47dc03c816edddfb7743/diff:/var/lib/docker/overlay2/8aba1921fbfb0bb6fb83a41f847e6c8982ec40f7003575b4fdff00a427517188/diff:/var/lib/docker/overlay2/d903a5838c49ce855420a4b353e659e9c985dc7854c9f4bc8d17782809b13788/diff",
            "MergedDir": "/var/lib/docker/overlay2/5b9a1888284b37cf269ccf7c96113acb42e339c14758bc02bdeda2cbbf6798a6/merged",
            "UpperDir": "/var/lib/docker/overlay2/5b9a1888284b37cf269ccf7c96113acb42e339c14758bc02bdeda2cbbf6798a6/diff",
            "WorkDir": "/var/lib/docker/overlay2/5b9a1888284b37cf269ccf7c96113acb42e339c14758bc02bdeda2cbbf6798a6/work"
        },
        "Name": "overlay2"
    },
    "RootFS": {
        "Type": "layers",
        "Layers": [
            "sha256:0fceba70669334d0c2890d8a9c5e8f0a8c153fde2d921de69084f3360e741c08",
            "sha256:119109bb60785fdb3cd0c7fd94967647864a3c3272303dae170fe9977f2616c4",
            "sha256:b0ea1823239790f7fa9fcdfe6023967049205755a906142272eb7dec2ddd513d",
            "sha256:d3862e62bd2287e15cc8d8e6c4be534791515fb9a4a39ebf9554fad27715f59c",
            "sha256:6e7d3c43f48756ffaab2d226d124669fbc8386c72b49a01bd44f5d90d060b294",
            "sha256:fa28002d9d35a68fdb4a3120bd1c84c03b181c1bde0132e05e519bcc0c660a06",
            "sha256:bd115a482d24cc0659d216a9d5f4418ff0f19841fec1451100b40a85124d847b",
            "sha256:b790178deecdb5ed1a3a406254a9ec975fe0a0098468d0d4eaca4c8ddc47ef04",
            "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
            "sha256:587399044d99df8f9616f9fd3d355efdde54c9b5c7264fcf2dddf370f697d405",
            "sha256:c91f37562a4d5f1f9c01eb99434cc08c06797f30d77f9c09e630f6083b923c17",
            "sha256:66120584f92925c7a9e7a7bcb22d42badbc1342038f41bc3f51ee693262c7991",
            "sha256:5154c335af4e76cda15c44795408f3ed7a1454a14db5476c3c973e7f39402bde",
            "sha256:c09660ee7adda64b1e1dcc056e90ebd7fc30353568eb30235590b769377b66c1",
            "sha256:5fd3175a0ba79f30cae7ac104ba53a90f2befea6b2db54e6101a704019933e33",
            "sha256:fdacf760dab8cdbda744a05fec238452e35261a3bd8d4050a258a8788729265b",
            "sha256:4e5c3e39a5fc725d0a7a27bf944f4b40af5c207803dda9117fd845fa01dd4ee7",
            "sha256:c7e984fc7bc280532d6b86c02a49876bafeae2ee7c29b36219bdaeb0efc40c49",
            "sha256:6b7d157c522ef89a64aa333118e6bfd048f2d0f25efd95ef1b96feb7363ddcb3",
            "sha256:f356c901edc9edb5eb0c8be0d5a186d6fde15a1a1fee44e56b95eac1e93b8ce9",
            "sha256:5304178d899e869009acc1d6db260f01fa827e8aef9df3f30f8aa203171252a9",
            "sha256:2ecc48c64ba5d2e055e1f9eb7e2bd70ee6f511562af85a5546b41b28b96471dd",
            "sha256:b657ed4319ca51b848c8425a373d415873a70944676e81c87f55730cfb194128",
            "sha256:09e0e058136b2cf612552e9bcfb8d8e82ba66ac81ff3abbb441b226f9f4df30d",
            "sha256:eade2fa3d9a83d000412a3f0c496d70ecfb7ab981c00938b95a22210466eff32",
            "sha256:ab2436db4792a978b0ab261c285c97186a10b5f6e7e1bb39115a9301bae82406",
            "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
            "sha256:6d2ea16d922fc7ed9ade198ae99b2195c1456cc659502bdc57ee70b44ee77624",
            "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
            "sha256:3e4c164e082209edacd4448e5376c2da5d2feacdbdb529f54e2adad22217d967",
            "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
        ]
    },
    "Metadata": {
        "LastTagTime": "2026-10-27T21:17:49.453275555+08:00"
    }
}

更多版本

ghcr.io/misaka-link/deepseek-harness-docker:latest

linux/amd64 ghcr.io3.30GB2026-10-27 21:18
13
检测到您正在使用广告拦截插件,本站为公益站点,依赖广告维持运转 🙏 查看如何关闭 ×