无法使用自定义容器创建GCP Vertex AI笔记本问题求助
问题诊断与修复方案
核心问题分析
你遇到的两个问题根源在于Vertex AI用户管理笔记本的默认行为和你的容器配置不匹配:
- 文件缺失:Vertex AI会默认将Jupyter Lab的工作区指向
/home/jupyter,但你的容器把代码放在了/app目录,所以打开笔记本后看不到自己的文件。 - 内核无法连接:Jupyter的启动配置、Python内核路径和Vertex的预期不匹配,导致内核无法正常初始化。
修复步骤
1. 修改Dockerfile适配Vertex AI规则
把代码目录调整到/home/jupyter,同时修正Jupyter启动参数,确保工作区正确指向你的代码:
# 使用与Python版本匹配的Vertex官方基础镜像,避免依赖冲突 FROM gcr.io/deeplearning-platform-release/base-cpu.py38 # 安装系统依赖 RUN apt-get update && \ apt-get install -y --no-install-recommends build-essential gcc && \ rm -rf /var/lib/apt/lists/* # 设置工作目录为Vertex默认的Jupyter工作区 WORKDIR /home/jupyter # 拷贝requirements并安装依赖 COPY requirements.txt . RUN pip install torch==2.0.1 && \ pip install --no-cache-dir -r requirements.txt && \ pip install jupyterlab google-cloud-storage # 拷贝所有代码到/home/jupyter COPY . /home/jupyter # 暴露端口 EXPOSE 8080 # 启动Jupyter Lab,指定工作目录并适配Vertex内核要求 CMD ["jupyter", "lab", \ "--port=8080", \ "--ip=0.0.0.0", \ "--no-browser", \ "--ServerApp.token=''", \ "--ServerApp.password=''", \ "--allow-root", \ "--notebook-dir=/home/jupyter"]
2. 重新构建并推送镜像
docker build -t gcr.io/[PROJECT-ID]/code:v3 . docker push gcr.io/[PROJECT-ID]/code:v3
3. 创建Vertex笔记本的注意事项
- 创建
USER-MANAGED NOTEBOOK时,选择新推送的镜像。 - 保留默认的工作区挂载设置,Vertex会自动处理
/home/jupyter的权限配置。
之前尝试失败的原因
- sleep infinity/无ENTRYPOINT:Vertex AI要求容器必须启动Jupyter服务并监听8080端口,
sleep会让Vertex无法检测到服务状态,直接返回502;无ENTRYPOINT则容器没有启动命令,无法正常运行。 - 官方镜像构建失败:你之前使用的是py37基础镜像,但安装了适配py38的torch,版本冲突导致构建失败,换成与Python版本匹配的官方镜像即可解决。
验证方法
- 本地运行新镜像,确认Jupyter Lab能加载所有代码:
docker run -p 8080:8080 gcr.io/[PROJECT-ID]/code:v3
- 云端创建笔记本后,打开即可看到
data、model等目录,内核也能正常连接。
内容的提问来源于stack exchange,提问作者olenscki
相关产品推荐
相关产品推荐

