开发机启动命令
为开发机指定「启动命令」字段,让开发机在启动时自动执行特定命令,实现自定义初始化、环境验证或自动化任务。
超时限制
为了确保容器实例的快速就绪和平台稳定性,我们为自定义启动命令设置了 3 分钟的超时限制。
- 开发机启动命令最多可执行 3 分钟。超过该时长,系统将强制终止该命令进程。
- 开发机启动命令的目标是执行启动自动化或快速初始化任务,不宜执行长时训练或下载操作。任何耗时不可预测的任务都可能失败。
- 若您希望执行的程序在后台持续运行(如 Jupyter、VS Code Server 等),请使用 nohup、tmux 或在命令末尾添加 & 来后台启动 。
注意
无论是否使用开发机自定义启动命令,平台都会忽略镜像中定义的 Entrypoint 或 Command。
使用场景说明
推荐(低风险)
- 使用
nohup或tmux启动已安装的服务 。 - 执行轻量级的、秒级可完成的初始化脚本(如创建目录、设置环境变量)。
- 运行快速的环境检查(如
nvidia-smi)。
- 使用
不推荐(高风险)
apt install .../yum install ...pip install -r requirements.txt/conda env create ...git clone https://...(克隆大型仓库或包含 LFS 文件的仓库)python download_dataset.py(下载大型数据集)- 原因:这些操作的耗时严重依赖于网络速度和文件大小,极易超过 3 分钟限制,导致环境配置不完整或失败。
不支持
- 由于用户自定义启动命令在 Docker 服务启动之前执行,因此并不支持在启动命令执行 「Docker 容器功能」相关操作。
注意
- 请勿使用开发机自定义启动命令来安装环境。利用类似
nohup pip install &命令绕开超时限制,有可能造成僵尸进程风险,后果自负。 - 推荐使用
Dockerfile中将所有的依赖(apt、pip、conda包,以及代码等)预先构建到您的自定义镜像中。然后,仅使用自定义启动命令来启动那些已安装的服务。 - 开发机启动后,平台会尝试自动安装 docker cli 客户端、jq、bash、openssh-server、runit、sudo、shadow-utils,无需自行安装。
推荐使用示例
如果遇到问题,请确保您要使用的工具或启动的服务(如 jupyter, tmux)已预先安装在镜像中。
启动后台常驻服务
如果需要启动 Jupyter Lab 这类需要长时间运行的服务,可以借助使用 nohup ... &、tmux 或其他进程管理工具 让启动命令本身立即退出,而让它启动的服务进入后台。
例如,使用 nohup 启动 Jupyter Lab,并在启动命令退出后让它继续运行。
bash
/bin/bash -c "nohup jupyter lab --ip=0.0.0.0 --port=8888 &"另一个实例,在 conda 环境中启动 Jupyter:
bash
tmux new -d 'conda activate dev_env && jupyter notebook'快速验证与轻量级初始化
检查 GPU 可用性,在容器启动时运行快速的冒烟测试或执行秒级的环境设置。
bash
/bin/bash -c "nvidia-smi && python -c 'import torch; print(torch.cuda.is_available())'"另一个实例,执行轻量级初始化脚本:
bash
/bin/bash -c "python /workspace/init_credentials.py && echo 'Init done'"注意
如果 init_credentials.py 脚本试图访问缓慢的网络 API,或依赖了未安装的 Python 包,可能执行失败。保证您的初始化脚本极其轻量,不依赖复杂计算或网络I/O。
查看执行日志
开发机启动命令的执行日志存储在 /var/log/user_command 目录下。
shell
root@is-db4qbnrdrqt47e65-devmachine-0:~# ls /var/log/user_command
init_2025_11_18_12_52_08.log