使用代理构建nvidia-docker

DockerFile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# 使用官方的 nvidia/cuda:11.8.0-devel-ubuntu22.04 镜像作为基础
FROM nvidia/cuda:11.8.0-devel-ubuntu22.04

# 设置环境变量,以便在 Docker 构建过程中不被提示输入
ENV DEBIAN_FRONTEND=noninteractive

# 接受构建时传入的代理参数
ARG http_proxy
ARG https_proxy
ARG HTTP_PROXY
ARG HTTPS_PROXY

# 设置环境变量
ENV http_proxy=${http_proxy}
ENV https_proxy=${https_proxy}
ENV HTTP_PROXY=${HTTP_PROXY}
ENV HTTPS_PROXY=${HTTPS_PROXY}

# 更新包列表并安装必要的软件包
RUN apt update && \
apt install -y \
ca-certificates \
curl \
gnupg \
lsb-release \
wget \
build-essential \
gdb \
sudo \
git \
libreadline-dev \
openssh-server \
vim && \
apt clean && \
rm -rf /var/lib/apt/lists/*

# 配置 SSH
RUN mkdir /var/run/sshd && \
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config && \
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config && \
ssh-keygen -A

# 创建用户 siyuan,设置密码并赋予高权限
RUN useradd -ms /bin/bash siyuan && \
echo 'siyuan:zzzsy666' | chpasswd && \
echo 'siyuan ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# 修改工作目录权限
RUN mkdir -p /workspace && chown siyuan:siyuan /workspace

# 切换到 siyuan 用户
USER siyuan
WORKDIR /workspace

# 确保 xmake 可执行文件目录在 PATH 中
ENV PATH="/home/siyuan/.local/bin:${PATH}"

# 安装 xmake
RUN curl -fsSL https://xmake.io/shget.text | bash


# 安装 Miniforge
RUN curl -L -o /home/siyuan/Miniforge3.sh "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-$(uname -m).sh" && \
bash /home/siyuan/Miniforge3.sh -b -p /home/siyuan/miniforge3 && \
rm /home/siyuan/Miniforge3.sh

# 更新 PATH 环境变量
ENV PATH="/home/siyuan/miniforge3/bin:${PATH}"

ARG CACHEBUST=1

# 切换回 root 用户以启动 SSH 服务
USER root

ENV PATH="/usr/local/cuda/bin:${PATH}"

# 开放 SSH 端口
EXPOSE 22

# 启动 SSH 服务
CMD ["/usr/sbin/sshd", "-D"]

构建指令

1
2
3
4
5
6
docker build \
--build-arg http_proxy=http://172.17.0.1:7890 \
--build-arg https_proxy=http://172.17.0.1:7890 \
--build-arg HTTP_PROXY=http://172.17.0.1:7890 \
--build-arg HTTPS_PROXY=http://172.17.0.1:7890 \
-t my_cuda_image .

后续发现不配置代理也行

1
docker build -t my_cuda_image .

运行指令

1
sudo docker run -p 2222:22 -v ~/sambashare/code:/home/siyuan/code/ --gpus all -it my_cuda_image  /bin/bash

使用代理构建nvidia-docker
http://zzsy.me/2024/12/04/nvidia-dockerfile/
作者
yuanyuan
发布于
2024年12月4日
更新于
2025年1月6日
许可协议