dockerfile的使用以及docker调用GPU


配置:
ubuntu系统

docker安装

curl -sSL https://get.daocloud.io/docker | sh

nvidia-container-toolkit安装

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
apt-get update && sudo apt-get install -y nvidia-container-toolkit
systemctl restart docker

场景一

场景描述

label-studio是一个开源的标注平台,想通过docker使用label-studio并在容器启动时自动启动该标注平台。该标注平台的启动命令是激活包含该第三方库的环境后,在命令行输入label-studio即可。

Dockerfile内容

FROM python:3.9
RUN pip install label-studio -i https://pypi.douban.com/simple
ENTRYPOINT ["label-studio"]

根据Dockerfile生成镜像

sudo docker build -t label-studio:0.1 .

在这里插入图片描述

根据镜像生成容器

sudo docker run -itd -p 8080:8080 label-studio:0.1

根据镜像生成容器+数据持久化

$\color{red} {注:要使用绝对路径}
/ h o m e / c t t / d o c k e r / l a b e l S t u d i o 是本地路径 \color{red} {/home/ctt/docker/labelStudio 是本地路径} /home/ctt/docker/labelStudio是本地路径
/ r o o t / . l o c a l / s h a r e / l a b e l − s t u d i o 是容器内的路径 \color{red} {/root/.local/share/label-studio 是容器内的路径} /root/.local/share/labelstudio是容器内的路径

sudo docker run -itd -p 8080:8080 -v /home/ctt/docker/labelStudio:/root/.local/share/label-studio label-studio:0.1 

场景二

场景描述

实现docker容器调用GPU训练模型,依赖库及版本号都在requirement里面。
CUDA是Nvidia开发的一种并行计算平台和编程模型,用于在其自己的GPU(图形处理单元)上进行常规计算。 CUDA使开发人员能够利用GPU的能力来实现计算的可并行化部分,从而加快计算密集型应用程序的速度。
注: n v i d i a / c u d a : 11.4.0 − b a s e − u b u n t u 20.04 是包含 c u d a 11.4 的 u b u n t u 镜像 \color{red} 注:nvidia/cuda:11.4.0-base-ubuntu20.04是包含cuda11.4的ubuntu镜像 注:nvidia/cuda:11.4.0baseubuntu20.04是包含cuda11.4ubuntu镜像
目录结构:
run.sh: 主程序后台挂载命令
datasets: 数据集文件夹
model_saved: 模型保存文件夹
pretrain_model: 预训练模型文件夹
nlp: 模型训练代码文件夹
Python-3.9.5.tar.xz: python3.9官网下载的安装包

.
├── app
│   ├── bash
│   │   └── run.sh
│   ├── datasets
│   ├── model_saved
│   ├── pretrain_model
│   └── nlp
├── Dockerfile
├── pack
│   ├── postag.zip
│   └── spacy_ontonotes.zip
└── python3.9
    └── Python-3.9.5.tar.xz

Dockerfile内容

FROM nvidia/cuda:11.4.0-base-ubuntu20.04

RUN mkdir /opt/software
COPY pack /root/.pkuseg
COPY app /opt
COPY python3.9 /opt/software/

#更换源
RUN \
    sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list \
    && sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list \
    && apt-get clean && apt-get update \
    && apt-get install --assume-yes apt-utils \
    && apt-get install -y build-essential \
    && apt-get install -y unzip \
    && apt-get install -y xz-utils \
    && apt-get install -y curl \
    && apt-get install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev
#更换python及下载依赖
RUN \
    cd /opt/software/ \
    && tar -xf Python-3.9.5.tar.xz \ 
    && cd Python-3.9.5/ \
    && ./configure --enable-optimizations \
    && make -j 4 \
    && make altinstall \
 #   && rm /usr/bin/python3 \
    && ln -s /opt/software/Python-3.9.5/python /usr/bin/python3 \
    && curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py \
    && python3 get-pip.py --force-reinstall
	
RUN \
    pip install --upgrade pip -i https://pypi.douban.com/simple --default-timeout=10000  \
    && pip install -r /opt/nlp/requirements.txt -i https://pypi.douban.com/simple --no-cache-dir --default-timeout=10000 \
    && pip install bert4keras==0.10.7 --no-cache-dir --default-timeout=10000 \
    && apt-get remove -y build-essential && apt-get clean \
    && unzip /root/.pkuseg/postag.zip -d /root/.pkuseg/postag \
    && unzip /root/.pkuseg/spacy_ontonotes.zip -d /root/.pkuseg/spacy_ontonotes \
    && chmod +x /opt/bash/run.sh
EXPOSE 7000

WORKDIR '/opt/bash'
CMD ["./run.sh"]

根据Dockerfile生成镜像

 docker build -t train:0.4 .

根据镜像生成容器

docker run -itd --gpus all  -p 7000:7000 train:0.4

根据镜像生成容器+数据持久化

--gpusgpu配置,没有该参数使用不了GPU,all 表示使用所有的gpu,如果要使用2个gpu,只需--gpus 2
-p 映射的端口号
-v本地路径:容器内路径

docker run -itd --gpus all  -p 7000:7000 -v /data/lzc/model_saved/:/opt/model_saved/ -v  /data/lzc/pretrain_model:/opt/pretrain_model/ -v  /data/lzc/datasets/:/opt/datasets  train:0.4

相似文章推荐:

docker常用命令

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值