简单的方式
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出现,后续步骤查吧,也不难查