Ubuntu18.04系统中使用Docker配置Ubuntu18.04深度学习开发镜像并上传至DockerHub
Ubuntu18.04系统中使用Docker配置Ubuntu18.04深度学习开发镜像并上传至DockerHub
目录
- 一. Ubuntu系统中安装Docker
- 二. Docker中配置Ubuntu18.04镜像
- 补充:容器常用指令
一. Ubuntu系统中安装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安装会报错,原因在于conda和pip导出的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

注:导入命令中import和deeplearning之间有一个-,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.04Python:- 原始环境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.109cudnn:8.9.4python库(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
更多推荐



所有评论(0)