基于rust镜像定制个人镜像

简单的方式
1、安装docker desktop 并登录
2、写dockerfile文件以及配合使用的entrypoint.sh文件
dockerfile文件

# 使用官方Rust镜像作为基础(基于Debian Bookworm)
FROM rust:1.86.0

# 安装vim和openssh-server,并生成SSH主机密钥
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    nano \
    git \
    nodejs \
    npm \
    openssh-server && \
    ssh-keygen -A && \
    rm -rf /var/lib/apt/lists/*

# 创建启动脚本
COPY entrypoint.sh /entrypoint.sh

# 配置SSH服务
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/' /etc/ssh/sshd_config && \
    sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config && \
    # 配置启动脚本权限
    chmod +x /entrypoint.sh

# 暴露SSH端口
EXPOSE 22

# 设置工作目录
WORKDIR /workspace

# 设置入口点
ENTRYPOINT ["/entrypoint.sh"]

entrypoint.sh文件

#!/bin/bash
set -e

# 检查必需的环境变量
if [ -z "$SSH_USER" ] || [ -z "$SSH_PUBKEY" ]; then
  echo "ERROR: 必须设置环境变量 SSH_USER 和 SSH_PUBKEY"
  exit 1
fi

# 设置用户ID默认值(可选)
USER_ID=${USER_ID:-1000}

# 创建用户及Home目录
if ! id -u "$SSH_USER" >/dev/null 2>&1; then
  useradd -m -s /bin/bash -u "$USER_ID" "$SSH_USER"
  echo "$SSH_USER ALL=NOPASSWD:ALL" >> /etc/sudoers
fi

# 配置用户SSH公钥
USER_HOME="/home/$SSH_USER"
mkdir -p "$USER_HOME/.ssh"
echo "$SSH_PUBKEY" > "$USER_HOME/.ssh/authorized_keys"
chmod 700 "$USER_HOME/.ssh"
chmod 600 "$USER_HOME/.ssh/authorized_keys"
chown -R "$SSH_USER:$SSH_USER" "$USER_HOME/.ssh"

# 确保/run/sshd目录存在
mkdir -p /run/sshd && chmod 0755 /run/sshd

# 生成SSH主机密钥(首次启动时自动生成)
if [ ! -f /etc/ssh/ssh_host_ed25519_key ]; then
  ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
fi

# 修复PATH(如果本来就有,则无须添加)
# root
echo "alias cls=clear" >> "/root/.bashrc"
cat >> /root/.bashrc << 'EOF'
if ! echo $PATH | grep -q "/usr/local/cargo/bin" && [ -d "/usr/local/cargo/bin" ]; then 
  PATH=/usr/local/cargo/bin:$PATH
fi
EOF
echo "export RUSTUP_HOME=\"/usr/local/rustup\"" >> "/root/.bashrc"
source /root/.bashrc

# $USER_HOME
echo "alias cls=clear" >> "$USER_HOME/.bashrc"
cat >> $USER_HOME/.bashrc << 'EOF'
if ! echo $PATH | grep -q "/usr/local/cargo/bin" && [ -d "/usr/local/cargo/bin" ]; then 
  PATH=/usr/local/cargo/bin:$PATH
fi
EOF
echo "export RUSTUP_HOME=\"/usr/local/rustup\"" >> "$USER_HOME/.bashrc"
source $USER_HOME/.bashrc
# 配合/etc/profile效果更好
echo "source ~/.bashrc" >> "/etc/profile"

# 启动SSH服务
exec /usr/sbin/sshd -D

功能自行定制,仅作参考!
3、构建镜像

在dockerfile文件所在目录下运行
docker build -t rust_dev_image:1.86.0 .    # name:tag 都可自定义,其它自问AI,我也不懂了

4、不出意外,docker desktop上Images中会有新的image出现,后续步骤查吧,也不难查

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容