ubuntu 系统安装docker——使用docker打包python项目,整个流程介绍

news2025/1/23 6:09:43

目录

1 安装docker和配置镜像源

 2 下载基础镜像

 3 通过镜像创建容器

4 制作项目所需的容器

5 容器制作好后打包为镜像

6 镜像备份为.tar文件

7 从其他服务器上恢复镜像

8 docker的其他常用指令


首先科普一下镜像、容器和实例;

镜像:相当于安装包;

容器:相当于系统,比如windows、mac、Linux系统;(容器也由镜像得来)容器可以被创建、启动、停止、删除、暂停等。

实例:就是在容器上进行自己的个性化;

1 安装docker和配置镜像源

(1)官网教程: Install Docker Desktop on Linux

(2)中文教程:Ubuntu - Docker — 从入门到实践 

本人是按照中文教程安装的docker;

(3)安装完后,为docker配置镜像加速器,就是进入一个json文件:

vim /etc/docker/daemon.json

在文件中写入镜像URL:

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

之后重新启动服务:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

配置镜像源网址:镜像加速器 - Docker — 从入门到实践

或者使用:docker 设置国内镜像源_docker国内镜像库_whatday的博客-CSDN博客

 2 下载基础镜像

这是一种比较简单的制作容器的方式:这里演示制作Linux, cuda对应的镜像;

(1)要进行镜像拉取,就是将Linux的这个镜像从网站上下载下来,尽量比你服务器的版本低一点

镜像拉取网址:GitHub - cnstark/pytorch-docker: Pure Pytorch Docker Images.

        这个网址展示:

         选择你需要用的版本(选带devel的 ,会更大 ,里面东西更全 ,更好用),复制后面的指令到Linux终端就🉑️;

                选取需要用的版本的方式:

                        (1)查看系统版本:

lsb_release -a

                截图展示:

                 (2)查看cuda版本:

nvidia-smi

                截图展示:

         那么就可以选取 cuda为11.4或者小于11.4的版本,系统选ubuntu为18.04的就可以。

另一个官方的镜像拉取网址:Docker

        该网址界面展示:

         要使用GPU的话,需要安装带cudnn的,根据本身服务器的系统,选择低于服务器版本的,也选择带devel的;同样复制后面的指令到服务器终端就可以;

(2)拉取指令花费时间较长,拉取完后可以通过:

docker images

通过这个指令查看是否成功将镜像拉取下来;

截图展示:

 3 通过镜像创建容器

(1)通过下面这个指令创建容器:

docker run -it --name 容器名字 --gpus all 刚刚下载的那个镜像

        -it, --name, --gpus都是参数,关于参数的解释可以查看:Docker run 命令 | 菜鸟教程

        -it 一般都写;

        --name 后面是你想要给容器起的名字;

        --gpus all 你想要容器使用服务器上的gpu 这个就一定要写;

指令案例:

docker run -d -it --name test --gpus all  11.3.1-cudnn8-devel-ubuntu18.04

 (2)创建完容器就直接进入容器里了

        (1)若想从容器推出: 按键: ctrl+P+Q -- 就可以退出容器,但是没有关闭容器;-- 若想再进入容器,输入指令:

docker attach test(容器名)

        (2)若直接输入: exit,就关闭容器了,但是没有将容器删除; -- 若想再进入容器,需要重启容器:

docker restart test(容器名)

        重启之后再进入,还是输入指令:

docker attach test(容器名)

(3) 查看容器是否创建成功的指令(需要先退出容器):

docker ps

        上述的指令是只可以看到还在运行的容器;

若还想看到关闭的容器,输入指令:

docker ps -a

截图展示:

 (4)测试容器能不能使用gpu,在容器中输入指令

nvidia-smi

如果类似下图的显示:

 证明是可以正常使用gpu的,但是如果识别不了这个指令,需要进行如下操作(我当时就识别不了)

        (1)需要为服务器安装nvidia驱动;当时的参考链接是:安装NVIDIA 驱动及nvidia-docker环境_docker 安装 nvidia 驱动_陶表犁的博客-CSDN博客

        (2)安装完重启服务器,重启docker;

        指令输入:

nvidia-docker

        若显示:

                 表示安装成功

        重启docker的指令为:

sudo systemctl restart docker

        (3)再进入容器输入nvidia-smi就可以成功显示了;

4 制作项目所需的容器

(1)上面展示的过程只是下载了一个基础的镜像,使用镜像创建了容器,但这个容器中什么都没有,需要为这个容器安装项目所需要的依赖包;

(2)首先要从你的项目中导出依赖包:

        两种方式:

                导出当前环境的依赖包:

pip freeze > requirements.txt

                导出项目的依赖包:

pipreqs ./

        具体不清楚的请看:Python导出当前环境依赖包及项目依赖包_YePeanut的博客-CSDN博客 

(3)将requirements.txt文件移动到镜像下,移动方式:

docker cp 项目中requirements.txt的路径 容器名:容器内存放requirements,txt的文件路径

指令案例:

docker cp /mnt/qqq/requirements.txt test:/FID/

(4) 依赖包文件移动到容器中后,需要安装这些依赖包,安装指令:

pip install -r /FID/requirements.txt

但是我安装的时候出现了很多问题,首先是pip指令没有,解决方案:

        首先输入指令:

apt-get update

        然后输入:

apt-get upgrade

        再安装:

apt-get install python3-pip

        这样就能安装上pip3,之后再用pip装其他的包就可以啦。

(5)容器中包含文件的截图(就是一个小的linux系统)

5 容器制作好后打包为镜像

(1)个人个性化的容器制作好,就可以打包为镜像,在其他服务器上安装使用了

(2)打包为镜像的指令:

docker commit [-m="提交的描述信息"] [-a="创建者"] 容器名称|容器ID 生成的镜像名[:标签名]

指令案例:

docker commit test fid

上面的参数部分可以不写;

(3)查看镜像是否制作好,输入指令:

docker images

        截图展示:

         这便制作好了一个名字为“fid”的镜像;

6 镜像备份为.tar文件

(1)使用.tar文件在其他服务器上获取你制作的这个镜像;

(2)备份指令:

docker save -o 保存的PathName 镜像名:标签

指令案例:

docker save -o /mnt/qqq/FID.tar fid

(3)将备份文件下载到本地,以备后续使用;

7 从其他服务器上恢复镜像

docker load -i 镜像备份文件

后续的步骤和上面就一样啦;

变为容器、容器中传入要用的代码;

8 docker的其他常用指令

删除容器:

docker rm 容器名

删除镜像:

docker rmi 镜像ID

 查看容器占有磁盘大小:

docker system df

查看每个镜像、容器的大小:

docker system df -v

查看docker信息:

docker info

上述内容为个人理解,个人总结,(搞了两整天才理解成这样),大家参考参考,轻点喷,有问题咱们评论区一起探讨!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么用消息队列实现分布式事务?

当消息队列和事务联系在一起时,它指的是消息生产者和消息消费者之间如何保持数据一致性。 什么是分布式事务? 事务是指当我们进行若干项数据更新操作时,为了保证数据的完整性和一致性,我们希望这些更新操作要么都成功&#xff0…

蓝桥杯三月刷题 第五天

文章目录💥前言😉解题报告💥数的分解🤔一、思路:😎二、代码:💥前言 上午没写,下午写了会被朋友拉出去耍,被冷风吹到了,而且被他坑了,根本没有玩骑…

【源码库】在调用 createApp 时,Vue 为我们做了那些工作?

在使用Vue3时,我们需要使用createApp来创建一个应用实例,然后使用mount方法将应用挂载到某个DOM节点上。 那么在调用createApp时,Vue再背后做了些什么事情呢?今天就来扒一扒Vue3的源码,看看调用createApp发生了些什么…

八股文系列:Java虚拟机(JVM)

说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、 Execution engine(执行引擎);两个组件为Runtime data area(运行时数据 区)、Native Interface(本地接口)。 Class loader(类装载)&…

IDEA插件开发入门.02

前言许久没更新IDEA插件开发系列了。最近刚好在汇总日常开发中常见的代码“异味”,共享文档复制黏贴略显麻烦,所以想着是否可以搞一个IDEA插件来帮忙收集常见代码,毕竟IDEA作为后端程序员必备的开发工具,显然会方便很多。于是&…

【JavaEE初阶】第四节.文件操作 和 IO (上篇)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、文件 1.1 文件的概念 1.2 文件的路径二、 Java中文件系统操作 2.1 File类的属性 2.2 File类的构造方法 2.3 File类的方法 …

ArangoDB

介绍 ArangoDB 是一个原生的多模型开源数据库,具有灵活的文档、图形和键值数据模型。使用方便的类似 SQL 的查询语言或 JavaScript 扩展构建高性能应用程序。主要特点 在集群上安装 ArangoDB —— 安装简单灵活的数据建模:数据建模为键值对、文档或图表的…

企业信息化,电商商品详情API接口,数据返回值说明,商品详情,关键词搜索,价格监控,卖家买家订单等相关数据

都在说API,API到底是什么? 对于很多非IT人士而言,API ≈ 听不懂。 其实日常生活中,我们有很多类似API的场景,比如: 电脑需要调用手机里面的信息,这时候你会拿一根数据线将电脑手机连接起来&a…

[Tomcat]解决IDEA中的Tomcat中文乱码问题

目录 1、IDEA 2、VM options 3、IDEA启动程序的存放目录 4、Tomcat 写在前面:此方法亲测有效!!! 1、IDEA 2、VM options 加上这两行: -Dfile.encodingUTF-8 -Dconsole.encodingUTF-8 3、IDEA启动程序的存放目录…

置信椭圆(误差椭圆)详解

文章目录Part.I 预备知识Chap.I 一些概念Chap.II 主成分分析Chap.III Matlab 函数 randnChap.IV Matlab 函数 pcaPart.II 置信椭圆的含义Chap.I 一个 Matlab 实例Sec.I 两个不相关变量的特征Sec.II 两个相关变量的特征Chap.II 变换阵 (解相关矩阵) 的求解ReferencePart.I 预备知…

配置VM虚拟机Centos7网络

配置VM虚拟机Centos7网络 第一步,进入虚拟机设置选中【网络适配器】选择【NAT模式】 第二步,进入windows【控制面板\网络和 Internet\网络连接】设置网络状态。 我们选择【VMnet8】 点击【属性】查看它的网络配置 2 .我们找到【Internet 协议版本 4(TCP…

一小时快速上手GoWeb开发之Gin框架

Go是一门正在快速增长的编程语言,专为构建简单、快速且可靠的软件而设计。golang提供的net/http库已经很好了,对于http的协议的实现非常好,基于此再造框架,也不会是难事,因此生态中出现了很多框架。 Gin:G…

【rust-grpc-proxy】在k8s中,自动注入代理到pod中,再不必为grpc调试而烦恼

目录前言原理sidecarwebhook实现安装k8s设置webhook使用尾语前言 rust-grpc-proxy 目前功能基本完善。是时候上环境开始应用了。 之前考虑是gateway模式或者sidecar模式。 思考良久之后,觉得两种模式都有使用场景,那就都支持。本次就带来sidecar模式的食…

实战小项目之视频监控(1-1)

实战小项目之视频监控(1-1) 目前常见的视频监控和视频直播都是使用了 RTMP 和 RTSP 流媒体传输协议等。 RTSP(Real-Time Stream Protocol)由 Real Networks 和 Netscape 共同提出的,基于文本的多媒体播放 控制协议。…

计算机科学导论笔记(五)

目录 七、操作系统 7.1 引言 7.1.1 操纵系统 7.1.2 自举过程 7.2 演化 7.3 组成部分 7.3.1 用户界面 7.3.2 内存管理器 7.3.3 进程管理器 7.3.4 设备管理器 7.3.5 文件管理器 7.4 操作系统 7.4.1 UNIX 7.4.2 Linux 7.4.3 Windows 七、操作系统 7.1 引言 计算机…

阿里云手机短信登录

阿里云短信服务介绍阿里云短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%&…

三维重建(单目、双目、多目、点云、SFM、SLAM)

1 相机几何与标定1.1 相机模型中的坐标系1.2 四种坐标系之间的转换1.3 相机内参1.4 相机标定2 单目三维重建2.1 NeuralRecon三维重建定义 在计算机视觉中, 三维重建是指根据单视图或者多视图的图像重建三维信息的过程. 由于单视频的信息不完全,因此三维重建需要利用经验知识. 而…

DJ1-2 操作系统引论

目录 一、操作系统的发展过程 1. 无操作系统 2. 单道批处理系统 3. 多道批处理系统 4. 分时操作系统 5. 实时系统 二、操作系统的基本特征 1. 并发性 2. 共享性 3. 虚拟性 4. 异步性 三、操作系统的主要功能 1. 处理机管理功能 2. 存储器管理功能 3. 设备管理功…

python pca/svd原理及应用

PCA的定义主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域。它的主要作用是对高维数据进行降维。PCA把原先的n个特征用数目更少的k个特征取代,新特…

Elasticsearch使用——高级篇

1.数据聚合**聚合(aggregations)**可以让我们极其方便的实现对数据的统计、分析、运算。例如:什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售情况如何?实现这些统计功…