Docker关于conda环境的导出和导入

Docker关于conda环境的导出和导入

  • 1、常用命令:
  • 2、环境导出:
  • 3、两个服务器之间的文件传输命令:
  • 4、环境导入:
  • 5、快速进入容器
  • 6、其他问题解决记录:

1、常用命令:

docker pull -- 从远程仓库将镜像下载至本地
docker run -- 运行一个容器
docker images -- 常看本地镜像
docker ps -- 查看容器,默认只查看已启动的,加入 "-a" 参数可以查看所有
docker rm -f ID # 删除之前的运行容器

重命名容器
docker rename old_name new_name
拷贝文件到容器中
docker cp MLP 95909784d85b:/workspace/
进入容器中
docker exec -u 0 -it testtorch /bin/bash

docker save保存的是镜像(image),docker export保存的是容器(container)
docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

2、环境导出:

Step-1:
安装docker(可以忽略)

Step-2:
拉取anaconda镜像(docker images检查看看,已经有了的话就跳过这一步)
docker pull continuumio/anaconda3

Step-3:
基于拉取的镜像创建容器
docker run -i -t continuumio/anaconda3 /bin/bash

Step-4-1:
cd opt/conda/envs
ls(没有东西)

step-4-2(可选步骤):
退出容器: exit
查看容器名称:docker ps -a
可以改容器名称:docker rename great_chaum ljhpytorch
再次查看容器名称:docker ps -a


Step-5:
查看本地anaconda中env的路径(例如:/home/ljh/anaconda3/envs/pytorch/)

Step-6:
可以另起一个终端
把本地的环境文件复制到容器中
docker cp /home/ljh/anaconda3/envs/pytorch/ ljhpytorch:/opt/conda/envs


Step-7
启动容器:docker start ljhpytorch
进入容器:docker exec -u 0 -it ljhpytorch /bin/bash 
查看是否文件已经复制过来cd opt/conda/envs
ls

Step-8:
验证是否能够使用环境:source activate 环境名称
例如:source activate pytorch

Step-9:
运用 docker commit 指令将运行的容器保存为镜像。
docker commit container_name image_name(随便取) 
例如:docker commit ljhpytorch ljhpytorchimage
docker images可以看到新增了一个镜像

Step-10:
镜像导出:
docker save -o image.tar(这个也可以随便取名字) image_name

给文件夹或文件全部的权限:sudo chmod -R 777 ./tao/(选择修改权限的文件名称)

3、两个服务器之间的文件传输命令:

scp -r /home/myfile username@192.000.000.000:/home/myfile
其中scp为命令,-r代表移动文件,/home/myfile代表源文件夹所在的绝对路径,username@192.000.000.000:/home/myfile代表目标服务器中目标用户名的目标文件夹。
示例: 【默认目标服务器端口22】
scp -r /data/liujiahui/2022/master/ ljh@192.XXX.XXX.XXX:/DataDisk/liujiahui/AllCode/

如果需要指定目标服务器端口:
scp -r -P 5022 /data/liujiahui/2022/master/ ljh@192.XXX.XXX.XXX:/DataDisk/liujiahui/AllCode/

跳出选项,记得输入yes,然后输入密码


4、环境导入:

Step-1:
镜像导入
docker load < image.tar

Step-2:
(挂载的同时已经创建了容器,容器名称取决于下面的 --name)
挂载宿主机目录至容器/data 目录:(此处需要修改的是宿主机目录)
这样可以便于文件的传输共享
示例:
docker run -id --gpus all --name ljhcontain -v /home/ljh/Desktop/mydata/:/data/ ljhpytorchimage

Step-3:
进入容器
docker exec -u 0 -it ljhcontain /bin/bash

Step-4:
nvidia-smi
查看是否可以使用gpu
完成!

5、快速进入容器

正常进入容器需要先su进入超级用户,然后执行以下两个命令
docker start ljhcontain(有时候不需要)
docker exec -u 0 -it ljhcontain /bin/bash

由于不是很好记忆,因此可以通过将上述命令直接写在bash脚本执行,步骤如下:

Step-1:
创建一个文件名为xxxx.sh的空文件,可以直接在home/用户名/下面创建

Step-2:
在文件中写入下面两行(记得修改容器名称),然后保存
docker start ljhcontain
docker exec -u 0 -it ljhcontain /bin/bash

Step-3:
bash xxx.sh
可以直接一步进入容器(如下图所示)

注:还有其他通过修改环境变量等方法,感觉有些麻烦,可以自行研究

6、其他问题解决记录:

1)docker无法使用gpu,显示没有驱动

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

sudo apt-get install -y nvidia-container-toolkit

2)bash: vim: command not found

apt-get update
apt-get install -y vim

3)容器进入失败

解决方法:
docker start testtorch
docker exec -u 0 -it testtorch /bin/bash  

4)su进入失败

$ su - root
Password: 
su: Authentication failure
Sorry.

解决办法:
$ sudo passwd root
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

5)pip安装python包失败

使用pip安装python包的时候,出现以下错误:
bash: /opt/conda/envs/pytorch/bin/pip: /home/ljh/anaconda3/envs/pytorch/bin/python: bad interpreter: No such file or directory

解决方法:
在容器中解决问题
step-1:【如下图所示】
which pip
获得pip路径

step-2:【如下图所示】
which python
获得python路径

step-3:【如下图所示】
vim pip路径
这里可能会vim报错,解决方法参考问题3

step-4:
vim常用操作指令:
按下i表示开始编辑
按下Esc表示保存并退出编辑
退出编辑之后按下:wq可以退出vim

这一步需要完成的是修改把文件第一行的路径修改为step-2获取的路径【如下图所示】

step-5:
测试是否成功
pip -V

在这里插入图片描述
6)docker中使用cv2失败

import cv2
出现以下报错:
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

解决方法:
apt-get update
apt-get install ffmpeg libsm6 libxext6  -y

7)训练时出现共享内存不够(Bus error)

方法一:在Dataloader中将num_worker设置为0。意味着每一轮迭代时,dataloader不再有自主加载数据到RAM这一步骤(因为没有worker了),而是在RAM中找batch,找不到时再加载相应的batch。
方法二:在起Docker容器时,设置 --ipc=host 或 --shm-size 或者

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HDFS架构 之 服务视图

1 、简介 为实现以上特性,HDFS包含的各个服务模块都是经过精心设计的,HDFS的服务视图如图。 HDFS的服务视图包含三大部分:核心服务、公共服务和拓展服务。 2、 核心服务 1)Namenode。HDFS系统采用中心化设计,即Master/Slave架构。这里的Namenode即是Master,主要作用是管…

瑞_力扣LeetCode_二叉树相关题

文章目录 说明题目 144. 二叉树的前序遍历题解 题目 94. 二叉树的中序遍历题解 题目 145. 二叉树的后序遍历题解 题目 105. 从前序与中序遍历序列构造二叉树题解 题目 106. 从中序与后序遍历序列构造二叉树题解 &#x1f64a; 前言&#xff1a;本文章为瑞_系列专栏之《刷题》的…

基于微信小程序的学生公寓宿舍电费管理系统的研究与实现

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

c++多态(1) -- 子类型及什么是多态

目录 代码分析: 代码中我们使用了三种方式: 为什么子类对象可以赋值给父类对象? 子类型的传递性: 使用父类的指针指向子类的对象: 总结: 子类型和多态的联系及什么是多态 那父类指针指向子类对象的用处在哪? 子类型: 从名字看就知道和继承有关。 子类型…

Windows 版Oracle 数据库(安装)详细过程

首先到官网上去下载oracle64位的安装程序 第一步&#xff1a;将两个datebase文件夹解压到同一目录中。 当下载完成后,它里面是两个文件夹 win64_11gR2_database_1of2, win64_11gR2_database_2of2,我们需要把其中的一个database文件夹整合在一起(复制一个database文件夹到另一…

2024.02.07

总结C类中的继承&#xff0c;虚继承&#xff0c;多态等概念&#xff08;画思维导图&#xff09;

政安晨:机器学习快速入门(四){pandas与scikit-learn} {随机森林}

咱们将在这篇文章中使用更复杂的机器学习算法。 随机森林 基本定义 随机森林(Random Forest)是一种机器学习算法&#xff0c;属于集成学习(ensemble learning)的一种。它是通过构建多个决策树&#xff08;即森林&#xff09;来进行预测和分类的。 随机森林的主要特点是采用了…

如何配置Pycharm服务器并结合内网穿透工具实现远程开发

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

Idea Git Review插件

idea git plugin 添加了一些常用的小插件 可以右键打开git bash窗口 可以右键选中文字点击baidu fanyi 可以通过搜索git用户名 指定开始时间查询某个版本自己提交的所有代码文件 可以通过点击蓝色行数&#xff0c;跳转到指定的改动代码块 资源地址&#xff1a; git-pl…

【C语言 - 力扣 - 反转链表】

反转链表题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 题解1-迭代 假设链表为 1→2→3→∅&#xff0c;我们想要把它改成 ∅←1←2←3。 在遍历链表时&#xff0c;将当前节点的 next 指针改为指向前一个节点。由于节点没…

STM32 新建寄存器版本MDK工程简要步骤

新建工程文件夹 新建一个工程根目录文件夹&#xff0c;并在该文件夹里新建D/M/O/P/U文件夹。 Drivers&#xff1a;存放与硬件相关的驱动层文件Middlewares&#xff1a;存放正点原子提供的中间层组件文件和第三方中间层文件Output&#xff1a;存放工程编译输出文件Projects&am…

前端学习笔记 | HTML5+CSS3静态网页制作的技巧(持续更新)

注&#xff1a;本文的css样式均使用less写法 1、字体居中 &#xff08;1&#xff09;先text-align:center;行内元素水平居中 &#xff08;2&#xff09;再line-heigh:(盒子高度);行内元素垂直居中 text-align: center;line-height: ( 30 / vw ); 2、盒子居中 情景1&#…

【AIGC风格prompt深度指南】掌握绘画风格关键词,实现艺术模仿的革新实践

[小提琴家]ASCII风格&#xff0c;点&#xff0c;爆炸&#xff0c;光&#xff0c;射线&#xff0c;计算机代码 由冰和水制成的和平标志]非常详细&#xff0c;寒冷&#xff0c;冰冻&#xff0c;大气&#xff0c;照片逼真&#xff0c;流动&#xff0c;16K 胡迪尼模拟火和水&#x…

MySQL数据引擎、建库及账号管理

目录 一、MySQL数据库引擎 1.1.MySQL常见数据库引擎 1.InnoDB(MySQL默认引擎) 2.MyISAM 3.MEMORY&#xff08;Heap&#xff09; 1.2.存储引擎查看 二、建库 1.默认数据库介绍 2.建库 3.查看数据库 4.删除数据库 三、账号管理 1.创建用户 1.创建用户并设置登陆密码…

Ryzen Controller 最新版本下载

Ryzen Controller 最新版本下载 GitLab中最新版本地址&#xff1a; Releases Ryzen Controller Team / Ryzen Controller GitLab 然后语言切换成简体中文&#xff0c;就可以愉快使用啦

Springboot多种方法处理静态资源:设置并访问静态资源目录

&#xff5e;目录嗷&#xff5e; 静态文件application设置方法 配置详解编写配置优缺点 设置配置类方法 配置详解编写配置优缺点 总结 作者&#xff1a;Mintimate 博客&#xff1a;https://www.mintimate.cn Mintimate’s Blog&#xff0c;只为与你分享 静态文件 静态资源&…

FlinkSql 窗口函数

Windowing TVF 以前用的是Grouped Window Functions&#xff08;分组窗口函数&#xff09;&#xff0c;但是分组窗口函数只支持窗口聚合 现在FlinkSql统一都是用的是Windowing TVFs&#xff08;窗口表值函数&#xff09;&#xff0c;Windowing TVFs更符合 SQL 标准且更加强大…

uniapp 本地存储的方式

1. uniapp 本地存储的方式 在uniapp开发中&#xff0c;本地存储是一个常见的需求。本地存储可以帮助我们在客户端保存和管理数据&#xff0c;以便在应用程序中进行持久化存储。本文将介绍uniapp中本地存储的几种方式&#xff0c;以及相关的代码示例。 1.1. 介绍 在移动应用开发…

浅谈bypass Etw

文章目录 c#ExecuteAssemblybypass etw c# loader 一种是通过反射找到指定空间的类中method进行Invoke 另一种是通过EntryPoint.Invoke加载 反射加载 Assembly.Load()是从String或AssemblyName类型加载程序集&#xff0c;可以读取字符串形式的程序集 Assembly.LoadFrom()从指定…

elk之倒排索引

写在前面 本文看下es的倒排索引相关内容。 1&#xff1a;正排索引和倒排索引 正排索引就是通过文档id找文档内容&#xff0c;而倒排索引就是通过文档内容找文档id&#xff0c;如下图&#xff1a; 2&#xff1a;倒排索引原理 假定我们有如下的数据&#xff1a; 为了建立倒…
最新文章