已有镜像创建开发机
更新时间:2024-11-19
用户可以使用自有镜像创建开发机,可以有几种方式:
方式 | 适用场景 | WebIDE | SSH | WebShell |
---|---|---|---|---|
方式一:使用已有镜像制作开发机镜像 | 长期使用,团队内使用公共基础镜像开发的场景 | 支持 | 支持 | 支持 |
方式二:现有镜像通过启动命令安装和启动WebIDE服务、SSH服务 前置条件:需要集群可以访问外网 |
不具备制作镜像条件或者希望快速在已有镜像中使用WebIDE、SSH连接进行开发调试的场景 | 支持 | 支持 | 支持 |
方式三:直接使用sleep 命令启动开发机使用开发机在线WebShell |
临时性进入容器镜像查看代码、文件、调试代码且不需要WebIDE的场景 | 不支持 | 不支持 | 支持 |
本文主要介绍如何通过启动命令方式创建开发机,制作镜像方式可参考《制作自定义镜像》章节。
在线WebShell开发机
任意镜像直接将执行命令设置为sleep
命令启动开发机,均可以使用开发机在线WebShell直接进行shell操作。
编写执行命令
假设需要开发机持续使用3天,将容器使用sleep命令进行休眠
sleep 3d
创建开发机
进入百舸控制台,选择开发机>创建开发机
使用WebShell
在开发机启动后,进入开机详情页,使用WebShell操作开发机
自定义启动命令发机
使用此方式创建开发机时由于需要从公网下载安装包,需要资源池可以访问外网。
以下以使用百舸加速镜像aiak-training-llm创建开发机为例进行讲解:
编写执行命令
编写执行命令,执行命令中完成Jupyter下载、服务启动、SSH服务启动
#!/bin/bash
set -e
# 镜像地址:
# registry.baidubce.com/aihc-aiak/aiak-training-llm:ubuntu22.04-cu12.3-torch2.2.0-py310-bccl1.2.7.2_v2.1.1.5_release
# PFS挂载路径
# /workspace/pfs
# Log function to capture script steps
log() {
echo "$(date +'%Y-%m-%d %H:%M:%S') - $1"
}
# 在22端口启动ssh服务
log "Starting SSH service..."
service ssh start
if [ $? -ne 0 ]; then
log "Failed to start SSH service"
exit 1
else
log "SSH service started successfully"
fi
export RUN_JUPYTER=1
export JUPYTER_TOKEN=${JUPYTER_TOKEN:-"b5991a5f456f820c0cf48a00691ae11434b6c32633e07dea"}
log "Jupyter token: $JUPYTER_TOKEN"
export JUPYTER_PORT=${JUPYTER_PORT:-"8600"}
log "JupyterLab port: $JUPYTER_PORT"
export JUPYTERLAB_BASE_URL=${JUPYTERLAB_BASE_URL}
log "JupyterLab base URL: $JUPYTERLAB_BASE_URL"
export WORKDIR="/workspace"
export JUPYTER_CONFIG_DIR="$WORKDIR/.jupyter"
# Install node.js
log "Setting up Node.js..."
curl -fsSL https://deb.nodesource.com/setup_16.x | bash -
if [ $? -ne 0 ]; then
log "Failed to set up Node.js repository"
exit 1
fi
apt-get install -y nodejs
if [ $? -ne 0 ]; then
log "Failed to install Node.js"
exit 1
fi
log "Starting script..."
# Create Jupyter config directory
log "Creating Jupyter config directory..."
mkdir -p "$JUPYTER_CONFIG_DIR"
CONFIG_FILE="$JUPYTER_CONFIG_DIR/jupyter_notebook_config.py"
log "Generating Jupyter config file..."
cat <<EOL > $CONFIG_FILE
import os
c = get_config()
c.NotebookApp.allow_remote_access = True
c.NotebookApp.allow_root = True
c.NotebookApp.terminado_settings = {'shell_command' : ['/bin/bash']}
c.LabApp.base_url = os.environ.get("JUPYTERLAB_BASE_URL", "/jupyter")
c.LabApp.ip = '0.0.0.0'
c.LabApp.port = os.environ.get("JUPYTER_PORT", "8600")
c.LabApp.terminado_settings = {'shell_command' : ['/bin/bash']}
c.NotebookApp.notebook_dir = ${WORKDIR}
EOL
# Install Python packages
log "Installing JupyterLab and additional Python packages..."
pip install jupyterlab -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install jupyterlab-language-pack-zh-CN -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install jupytext -i https://pypi.tuna.tsinghua.edu.cn/simple
if [ $? -ne 0 ]; then
log "Failed to install Python packages"
exit 1
else
log "Python packages installed successfully"
fi
# Start JupyterLab
log "Starting JupyterLab..."
nohup jupyter-lab --no-browser --NotebookApp.token="${JUPYTER_TOKEN}" --port=8600 --ip=0.0.0.0 --NotebookApp.base_url="${JUPYTERLAB_BASE_URL}" --notebook-dir="${WORKDIR}" > /workspace/.jupyter/jupyter.log 2>&1 &
if [ $? -ne 0 ]; then
log "Failed to start JupyterLab"
exit 1
else
log "JupyterLab started successfully"
fi
# Block the script and keep the process running
while true; do
# log "JupyterLab is running..."
sleep 60
done
创建开发机
进入百舸控制台,选择开发机>创建开发机
- 设置镜像地址为已有镜像,本例中使用的镜像 registry.baidubce.com/aihc-aiak/aiak-training-llm:ubuntu22.04-cu12.3-torch2.2.0-py310-bccl1.2.7.2_v2.1.1.5_release
- 设置环境变量(可选,通过设置JUPYTER_TOKEN可以自定义Jupyter密钥)
- 挂载路径
/workspace/pfs
- 点击左下角【完成】后等待开发机启动,大约需要3~5分钟,之后点击开发机列表页的【WebIDE】按钮即可进入开发机
WebIDE服务启动需要3~5分钟时间,如果页面不可用,等待几分钟之后刷新
- 使用Jupyter查看AIAK镜像文件及开发机调试
首次进入时需要在登录页面输入token,示例中token在【执行命令】中可以找到,固定为:b5991a5f456f820c0cf48a00691ae11434b6c32633e07dea,可以在创建时自行修改:
- 在启动命令中直接修改
- 配置JUPYTER_TOKEN环境变量