侧边栏壁纸
  • 累计撰写 21 篇文章
  • 累计创建 14 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

docker实现运行环境隔离

Administrator
2025-12-11 / 0 评论 / 0 点赞 / 0 阅读 / 11975 字

docker实现运行环境隔离

为什么要实现环境隔离

  • 防止a用户更改b用户文件,防止root用户更改cuda版本导致python环境失效,实现硬件共享,软件隔离

  • 首先安装docker,nvidia container toolkit,nvidia驱动。

安装docker

#安装前先卸载操作系统默认安装的docker,

sudo apt-get remove docker docker-engine docker.io containerd runc

#安装必要支持

sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

#添加 Docker 官方 GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

#阿里源GPG key

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

#Docker官方apt 源:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#阿里apt源

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#更新源 sudo apt update sudo apt-get update

#安装最新版本的Docker

sudo apt install docker-ce docker-ce-cli containerd.io

#查看Docker版本

sudo docker version

#查看Docker运行状态

sudo systemctl status docker

安装nvidia container toolkit

#预先更新apt

sudo apt-get update

#配置GPG key

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

#安装nvidia-container-toolkit

sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit

随后在dockerhub上拉取nvidia/cuda对应的版本镜像

docker pull nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 /bin/bash

分配所有gpu

docker run -it -d --gpus all --name nviu nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 /bin/bash

docker exec -it nviu /bin/bash

自定义docker镜像

但是考虑到要深度学习需要使用anaconda,我们可以手动构建一个带anaconda基础配置的镜像

1.考虑到官方源的延迟性,首要工作是换源

这里用的是22.04版本的ubuntu,文件名:sources.list, 在修改之前,建议备份原始的 sources.list 文件,以便在需要时恢复:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

sudo vim /etc/apt/sources.list

清空文件内容后,根据你的 Ubuntu 版本,添加以下国内镜像源之一:

清华大学镜像源

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

阿里云镜像源

deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

中科大镜像源

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

执行以下命令以更新软件包列表并升级系统:

sudo apt update && sudo apt upgrade -y

anaconda 下载

wget -c https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh

-c 中断以后继续下载

如果想构建带conda env环境的镜像还需要考虑使用RUN conda create -n torch -y python=3.9

构建dockerfile

docker build -f Dockerfile -t nvidiascf:v1 .

Dockerfile文件内容如下:

FROM nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
​
ADD sources.list /etc/apt/
ENV PATH /opt/conda/bin:$PATH
# Install basic dependencies
RUN apt-get update && apt-get install -y --no-install-recommends\
     bzip2 \
     g++ \
     git \
     graphviz \
     libg1l1-mesa-glx \
     libhdfs-dev \
     openmpi-bin \
     vim \
     libopencv-dev \
     libsnappy-dev \
     python-dev \
     python-pip \
     build-essential \
     wget && \
     rm -rf /var/lib/apt/lists/*
# Install anaconda for python 3.6
ADD Anaconda3-2024.06-1-Linux-x86_64.sh /home/anaconda.sh
RUN /bin/bash /home/anaconda.sh -b -p /opt/conda && \
    In -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
    rm -rf /home/anaconda.sh
    
​
# Set locale
ENV LANG C.UTF-8 LC_ALL=C.UTF-8
# Initialize workspace
RUN mkdir /workspace
WORKDIR /workspace
​
CMD ["/bin/bash"]

上述Dockerfile中的指令依次为! 1.FROM :指定基础镜像。

2.ADD:添加当前目录文件下的文件到镜像指定目录中

3.RUN :在镜像中执行命令

4.COPY :将本地文件复制到镜像中。

5.WORKDIR :设置工作目录。

6.CMD :定义启动容器后要执行的命令,


0

评论区