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

2023-05-16

目录

  • 一. Ubuntu系统中安装Docker
  • 二. Docker中配置Ubuntu18.04镜像
    • Step 1: 登录Docker
    • Step 2: 拉取Ubuntu18.04镜像
    • Step 3: 查看已有镜像
    • Step 4: 在容器中运行带有`GPU`组件的`Ubuntu18.04`镜像并设置容器名称(名称以`transformers`为例)
    • Step 5: 配置容器
        • 5.1 安装Python3.8.12
        • 5.2 导出原环境python库
        • 5.3 将`requirements.txt`文件移入`transformers`容器中
        • 5.4 在`transformers`容器中使用`pip`指令安装依赖包
        • 5.5 上传容器至`Docker Hub`
          • 5.5.1 为了不变动原容器,使用`export`指令导出原容器
          • 5.5.2 将导出的容器快照导入作为新镜像
          • 5.5.3 镜像规范化命名(用户名/镜像名)
          • 5.5.4 上传至`Docker Hub`
          • 5.5.5 [登录 Docker Hub 官网](https://hub.docker.com/)验证上传成功
  • 补充:容器常用指令

一. 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镜像

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 --gpus all --name transformers ubuntu:18.04 

-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 官网验证上传成功

在这里插入图片描述
完结撒花,做一下镜像介绍,有需要的可以直接使用

系统: 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

补充:容器常用指令

  • 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 搭建GitLab服务器

    下载 1 点击下载GitLab的rpm文件 2 或者命令下载 xff08 比较慢 xff0c 建议使用第一种方法直接下载 xff09 span class token function wget span https link zhihu
  • 求出a、b、c、d、e,满足ab-cd+e=1方程

    编写一个实验程序 xff0c 求出a b c d e xff0c 满足ab cd 43 e 61 1方程 xff0c 其中所有变量的取值为1 5并且均不相同 分析 xff1a 采用回溯法 xff0c 以找到变量的个数为终结条件 xff0c
  • idea插件 spring-assistant-@valuetoyml,快速定位到yml配置文件

    这里写自定义目录标题 idea插件 spring assistant 64 valuetoyml xff0c 快速定位到yml配置文件 安装 xff0c 在idea的插件市场直接搜索valuetoyml 自己在插件市场下载安装 插件详情 a
  • CA私有证书中心

    CA服务端 安装CA认证软件包中心 linux默认安装了 xff1a span class token function rpm span qf span class token variable span class token vari
  • MarkDown-IT插件使用

    目的 使后端返回数据库返回内容 xff0c 呈现到前端页面时 xff0c 展示它响应的MarkDown语法 实现机制 后端数据库直接存入Markdown语法 xff0c sql数据库字段数据类型建议采用LongText xff0c 后端传输
  • [Rust GUI]fltk-rs的helloworld

    1 安装VSCode 下载安装VSCode 安装VSCode扩展 rust analyzer或rust analyzer CN 2 安装Microsoft C 43 43 生成工具 访问微软官网下载生成工具 xff0c 勾选使用 C 43
  • OpenHarmony/HarmonyOS通用事件

    通用事件 点击事件 组件被点击时触发的事件 事件 onClick event nbsp event nbsp ClickEvent nbsp gt nbsp void 点击动作触发该回调 event返回值见ClickEvent对象说明 Cl
  • 通用信息整理

    通用事件 点击事件 触摸事件 挂载卸载事件 拖拽事件 按键事件 焦点事件
  • OpenHarmony/HarmonyOS文本通用属性

    文本通用属性 作者 坚果 团队 坚果组织 公众号 大前端之旅 润开鸿技术专家 华为HDE InfoQ签约作者 OpenHarmony布道师 擅长HarmonyOS应用开发 熟悉服务卡片开发 在 战码先锋 活动中作为大队长 累计培养三个小队长
  • OpenHarmony/HarmonyOS基础组件之XComponent

    基础组件之XComponent 作者 坚果 团队 坚果派 公众号 大前端之旅 润开鸿技术专家 华为HDE InfoQ签约作者 OpenHarmony布道师 擅长HarmonyOS应用开发 熟悉服务卡片开发 在 战码先锋 活动中作为大队长 累
  • OpenHarmony3.2release抢先体验

    OpenHarmony3 2release抢先体验 作者 坚果 团队 坚果派 公众号 大前端之旅 润开鸿技术专家 华为HDE InfoQ签约作者 OpenHarmony布道师 擅长HarmonyOS应用开发 熟悉服务卡片开发 在 战码先锋
  • OpenHarmony历史工程迁移

    OpenHarmony历史工程迁移 作者 坚果 团队 坚果派 公众号 大前端之旅 润开鸿技术专家 华为HDE InfoQ签约作者 OpenHarmony布道师 擅长HarmonyOS应用开发 熟悉服务卡片开发 在 战码先锋 活动中作为大队长
  • OpenHarmony应用沙箱路径和真实物理路径对应关系

    应用沙箱路径和调试进程视角下的真实物理路径 作者 坚果 团队 坚果派 公众号 大前端之旅 润开鸿技术专家 华为HDE InfoQ签约作者 OpenHarmony布道师 擅长HarmonyOS应用开发 熟悉服务卡片开发 在 战码先锋 活动中作
  • 创建ArkTS卡片

    创建ArkTS卡片 作者 xff1a 坚果 团队 xff1a 坚果派 公众号 xff1a 大前端之旅 润开鸿 技术专家 xff0c 华为HDE xff0c InfoQ签约作者 xff0c OpenHarmony布道师 xff0c 擅长Har
  • 卡片生命周期管理

    卡片生命周期管理 创建ArkTS卡片 xff0c 需实现FormExtensionAbility生命周期接口 在EntryFormAbility ts中 xff0c 导入相关模块 span class token keyword impor
  • 【坚果派-坚果】ArkTS如何优化Flex的布局性能

    如何优化Flex的布局性能 作者 xff1a 坚果 团队 xff1a 坚果派 公众号 xff1a 大前端之旅 润开鸿技术专家 xff0c 华为HDE xff0c InfoQ签约作者 xff0c OpenHarmony布道师 xff0c 擅长
  • 【坚果派-坚果】ArkTS气泡提示

    气泡提示 作者 xff1a 坚果 团队 xff1a 坚果派 公众号 xff1a 大前端之旅 润开鸿技术专家 xff0c 华为HDE xff0c InfoQ签约作者 xff0c OpenHarmony布道师 xff0c 擅长HarmonyOS
  • Windows服务搭建web网站,使用cpolar内网穿透实现公网访问

    文章目录 概述1 搭建一个静态Web站点2 本地浏览测试站点是否正常3 本地站点发布公网可访问3 1 安装cpolar内网穿透3 2 创建隧道映射公网地址3 3 获取公网URL地址 4 公网远程访问内网web站点5 配置固定二级子域名5 1
  • 搭建一站式OpenHarmony设备开发Windows开发环境

    搭建一站式OpenHarmony设备开发Windows开发环境 作者 xff1a 坚果 团队 xff1a 坚果派 公众号 xff1a 大前端之旅 润开鸿技术专家 xff0c 华为HDE xff0c InfoQ签约作者 xff0c OpenH
  • 关于OpenHarmony蜂窝通信框架能力的说明

    蜂窝通信框架能力 xff08 如需提供完整蜂窝通信能力需芯片厂商适配支持HDI接口 xff09 xff1a 支持双卡管理 xff0c 双卡通话 短信 搜网等基础能力接口和框架 支持VoLTE语音通话接口和框架 xff08 需要芯片厂商实现I

随机推荐