主题
个人镜像构建
镜像SSH模块安装和构建
为了不影响您的个人镜像上传使用,建议您对该镜像按如下方式再构建一次。在docker环境下,在同一目录下新建 Dockerfile 和 entrypoints.sh 两个文件,其中注释内容可视情况使用。
bash
image-build/
├── Dockerfile # 镜像构建规则
└── entrypoint.sh # 容器启动脚本Dockerfile:
bash
# 使用带有CUDA 12.4的基础镜像
FROM base_image:latest
# 设置环境变量
ENV DEBIAN_FRONTEND=noninteractive \
JUPYTER_PORT=8888 \
SSH_PORT=22 \
JUPYTER_TOKEN="ollama" \
ROOT_PASSWORD="password" \
WORKSPACE="/workspace" \
PATH="/root/.local/bin:$PATH" \
PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple \
PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn
# 替换阿里云镜像源
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list
# 安装系统依赖
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
openssh-server \ # 安装SSH服务
net-tools \
ca-certificates \
wget \
curl \
git \
python3-pip \
python3-dev \
python3-setuptools \
libssl-dev \
libffi-dev \
pkg-config \
software-properties-common
# 配置 pip 使用清华源
#RUN pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple && \
# pip3 config set install.trusted-host pypi.tuna.tsinghua.edu.cn
# 配置 SSH 服务
RUN mkdir -p /var/run/sshd && \
#echo "root:${ROOT_PASSWORD}" | chpasswd && \
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
sed -i 's/#PermitUserEnvironment no/PermitUserEnvironment yes/' /etc/ssh/sshd_config
# 配置 Jupyter
# RUN mkdir -p /root/.jupyter && \
# echo "c.ServerApp.ip = '0.0.0.0'" > /root/.jupyter/jupyter_server_config.py && \
# echo "c.ServerApp.port = ${JUPYTER_PORT}" >> /root/.jupyter/jupyter_server_config.py && \
# echo "c.ServerApp.open_browser = False" >> /root/.jupyter/jupyter_server_config.py && \
# echo "c.ServerApp.token = '${JUPYTER_TOKEN}'" >> /root/.jupyter/jupyter_server_config.py
# 创建工作目录
RUN mkdir ${WORKSPACE}
WORKDIR ${WORKSPACE}
# 暴露端口
EXPOSE ${SSH_PORT} 11434
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# 设置入口点
ENTRYPOINT ["/entrypoint.sh"]entrypoint.sh:
bash
#!/bin/bash
# 确保 GPU 可见性
export NVIDIA_VISIBLE_DEVICES=all
export CUDA_HOME=/usr/local/cuda
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:$LD_LIBRARY_PATH
ln -s /usr/bin/bash /bin/bash
# 检查环境变量 MY_TOKEN 是否存在
if [ -n "$MY_TOKEN" ]; then
echo "Setting root password from MY_TOKEN environment variable."
echo "root:$MY_TOKEN" | chpasswd
else
echo "No MY_TOKEN provided, using default password."
echo "root:password" | chpasswd
fi
# 启动 SSH 服务
service ssh start
# 启动 Ollama 服务
#echo "Starting Ollama 0.6.8..."
#export OLLAMA_HOST=0.0.0.0:11434
#ollama serve > /var/log/ollama.log 2>&1 &
# 启动 JupyterLab
#jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root
tail -f /dev/null执行镜像构建命令:
bash
cd image-build
docker build -t new-image-name:tag .在镜像构建完成后,可以参考 上传自定义镜像 将其上传至个人镜像仓库。