跳转到内容

个人镜像构建 ​

镜像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 .

在镜像构建完成后,可以参考 上传自定义镜像 将其上传至个人镜像仓库。