Ubuntu18.04系统中使用Docker配置Ubuntu18.04深度学习开发镜像并上传至DockerHub

一. Ubuntu系统中安装Docker

官网安装Docker

适用于

  • Ubuntu Jammy 22.04 (LTS)
  • Ubuntu Impish 21.10
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

二. Docker中配置Ubuntu18.04镜像

安装版本查看

docker --version

显示 docker 安装版本为20.10.18

Step 1: 登录Docker

sudo docker login

在这里插入图片描述

Step 2: 拉取Ubuntu18.04镜像

sudo docker pull ubuntu:18.04

在这里插入图片描述

Step 3: 查看已有镜像

sudo docker images

在这里插入图片描述
发现ubuntu镜像已经出现在目录中
注:如果安装错误版本可以使用下面指令强制删除镜像

sudo docker rmi -f image-id

image-id表示镜像的ID(上一条指令中第三个属性显示IMAGE ID)
在这里插入图片描述

Step 4: 在容器中运行带有GPU组件的Ubuntu18.04镜像并设置容器名称(名称以transformers为例)

sudo docker run -it -e NVIDIA_DRIVER_CAPABILITIES=compute,utility --gpus all --name transformers ubuntu:18.04 

2023.8.15更新日志:
由于docker容器下调用nvidia-smi显示CUDA Version:N/A,因此在定义容器时加入下面属性:
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility在这里插入图片描述

-t表示为容器重新分配一个伪输入终端,通常与 -i 同时使用
-i表示以交互模式运行容器
更多run指令介绍

Step 5: 配置容器

此处以在容器中ubuntu18.04系统配置深度学习开发环境为例给出配置方法

5.1 安装Python3.8.12
apt update
apt install sudo
apt install vim
apt install module-init-tools kmod  # NVIDIA驱动依赖包
apt install wget
wget https://www.python.org/ftp/python/3.8.12/Python-3.8.12.tgz  # 安装指定版本
tar -zxvf Python-3.8.12.tgz -C ~
cd ~/Python-3.8.12
apt install zlib1g-dev libbz2-dev libssl-dev libpcre3-dev libncurses5-dev  libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev   liblzma-dev libffi-dev  libc6-dev    # Python依赖包
6  # 选择地区亚洲
19 # 选择城市重庆
./configure --prefix=/usr/
make          # 3 min
make test     # 2 min 30 sec
make install  # 10 sec
ln -s /usr/bin/python3 /usr/bin/python
ln -s /usr/bin/pip3 /usr/bin/pip
mkdir /home/Documents	# 新建Documents文件夹用于后面存一些交互文件
mkdir /home/Downloads   # 新建Downloads文件夹用于存取下载文件
5.2 导出原环境python库

在原环境下激活conda环境后导出包, pip导出命令如下

pip list --format=freeze > requirements.txt

会导出当前环境conda中安装的包以及包的版本,并在当前目录生成requirements.txt文件

5.3 将requirements.txt文件移入transformers容器中
sudo docker  cp  /home/lab501/文档/requirements.txt  transformers:/home/Documents/requirements.txt

注:从transformers容器将文件移入主机的命令将上述路径调换即可,例如:

sudo docker  cp   transformers:/home/Documents/requirements.txt   /home/lab501/文档/requirements.txt
5.4 在transformers容器中使用pip指令安装依赖包
pip install -r /home/Documents/requirements.txt

注:

  • conda指令导出包,使用pip安装会报错,原因在于condapip导出的txt文件中包的表述形式不同
conda list -e > requirements.txt

例如conda导出包的表述形式为

scipy=1.4.1=pypi_0

pip导出包的表述形式为

scipy==1.4.1
  • pip导出包使用pip安装时也会出错,原因在于这些发生安装错误的包在原环境中都是从外链下载的,requirements.txt文件中没有指出这些链接因此找不到对应版本。解决办法为先在requirements.txt删除这些发生错误的包,如果不需要安装这些包就不用重新安装,需要安装的话再单独安装这些包,或者将版本改为pip源中存在的版本(前提是版本之间互相兼容)。
    在这里插入图片描述在这里插入图片描述

至此,使用cp指令传入模型代码和数据到transformers容器中即可正常运行和测试

5.5 上传容器至Docker Hub
5.5.1 为了不变动原容器,使用export指令导出原容器
sudo docker export transformers > transformers.tar
5.5.2 将导出的容器快照导入作为新镜像
sudo cat transformers.tar | sudo docker import - deeplearning

在这里插入图片描述
注:导入命令中importdeeplearning之间有一个-deeplearning为新镜像的名字(可自定义但是不能含有大写字母)

5.5.3 镜像规范化命名(用户名/镜像名)
sudo docker tag deeplearning:latest boxuguan/deeplearning
5.5.4 上传至Docker Hub
sudo docker push boxuguan/deeplearning:latest

在这里插入图片描述

5.5.5 登录 Docker Hub 官网验证上传成功

在这里插入图片描述
完结撒花,做一下镜像介绍,有需要的可以直接使用
V1.0 版本 (已删除)

系统: Ubuntu 18.04 (GPU版)
Python版本: Python3.8.12
配置: Pytorch 1.10.0, transformers4.10.0, NLTK3.7, tensorflow-cpu2.3.0, scipy1.4.1, scikit-learn0.24.1, pandas1.4.0, numpy1.18.5, codalab1.5.10

V2.0版本(最新NLP开发镜像)
在这里插入图片描述

5.6 镜像介绍
  • System:Ubuntu18.04
  • Python
    • 原始环境3.10.12
    • conda-base环境 3.11.4
    • conda-guanbx环境 3.10.12
  • Anaconda:Anaconda3-2023.07-2-Linux-x86_64 (conda:23.7.2)
  • cuda:release 11.3, V11.3.109
  • cudnn:8.9.4
  • python库(conda-guanbx环境下):
    • accelerate 0.21.0
    • beautifulsoup4 4.12.2
    • cmake 3.27.0
    • conda-pack 0.6.0
    • deepspeed 0.10.0
    • jieba 0.42.1
    • matplotlib 3.7.2
    • nltk 3.8.1
    • numpy 1.25.0
    • pandas 2.0.3
    • pip 23.2.1
    • torch 2.0.0+cu117
    • torchkeras 3.9.2
    • transformers 4.30.2
    • triton 2.0.0

补充:容器常用指令

  • Docker镜像索引方式
    IMAGE_REPOSITORY:TAG (例如ubuntu:18.04)
    IMAGE_ID
  • Docker容器索引方式
    CONTAINER_NAMES (例如transformers)
    CONTAINER_ID
  • 强制删除容器CONTAINER_NAMES
sudo docker rm -f CONTAINER_NAMES

在这里插入图片描述

  • 终端键入exit或者使用Ctrl+D退出并关闭容器
  • 使用Ctrl+Q+P退出容器,但不关闭容器
  • 使用如下指令查看正在运行的容器
sudo docker ps
sudo docker ps -a # 查看所有容器包括停止运行的容器

在这里插入图片描述

  • 运行容器但不进入该容器
sudo docker start CONTAINER_NAMES

在这里插入图片描述

  • 进入容器(前提是该容器已经在后台运行)
sudo docker attach CONTAINER_NAMES

在这里插入图片描述

  • 重启容器
sudo docker restart CONTAINER_NAMES
  • 停止运行容器
sudo docker kill CONTAINER_NAMES
sudo docker stop CONTAINER_NAMES
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值