Docker中conda环境的导出和导入

 更新时间:2024年02月07日 09:23:08   作者:UHLJH  
现在很多的应用程序系统都会选择使用docker容器进行部署,本文主要介绍了Docker中conda环境的导出和导入,具有一定的参考价值,感兴趣的可以了解一下

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 或者

到此这篇关于Docker中conda环境的导出和导入的文章就介绍到这了,更多相关Docker conda导出导入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker构建nginx alpine镜像实现步骤

    docker构建nginx alpine镜像实现步骤

    这篇文章主要介绍了docker构建nginx alpine镜像实现步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 使用Docker部署Dashdot服务器仪表盘的步骤

    使用Docker部署Dashdot服务器仪表盘的步骤

    Dashdot是一款简单、实用的开源服务器仪表盘,设计时考虑到了玻璃形态,它旨在用于较小的 VPS 和私人服务器,这篇文章主要介绍了使用Docker部署Dashdot服务器仪表盘,需要的朋友可以参考下
    2022-12-12
  • Docker build命令使用小结

    Docker build命令使用小结

    本文主要介绍了Docker build命令使用小结,主要用于使用Dockerfile创建镜像,它会根据用户提供的Dockerfile文件,在本地构建出一个新的镜像,感兴趣的可以了解一下
    2023-12-12
  • ubuntu如何在docker容器中安装strongswan

    ubuntu如何在docker容器中安装strongswan

    这篇文章主要介绍了ubuntu如何在docker容器中安装strongswan,起动一个ubuntu容器,我是用的docker compose启动的,compose的配置文件为ipsec-strongswan.yml,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • Docker安装MySQL8.0的详细步骤(附图文!)

    Docker安装MySQL8.0的详细步骤(附图文!)

    Windows上安装MySQL相对来说会较为简单,但是在Docker安装就没那么简单了,下面这篇文章主要给大家介绍了关于Docker安装MySQL8.0的详细步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • docker配置daemon.json镜像加速文件方式

    docker配置daemon.json镜像加速文件方式

    这篇文章主要介绍了docker配置daemon.json镜像加速文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Docker使用Git实现Jenkins发布、测试项目的详细流程

    Docker使用Git实现Jenkins发布、测试项目的详细流程

    这篇文章主要介绍了Docker使用Git实现Jenkins发布、测试项目的详细流程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 使用docker部署influxdb与 mongo的常用命令

    使用docker部署influxdb与 mongo的常用命令

    这篇文章主要介绍了使用docker部署influxdb与 mongo的常用命令,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • 教你docker方式部署nacos

    教你docker方式部署nacos

    Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理,下面通过本文给大家讲解docker方式部署nacos的过程,感兴趣的朋友一起看看吧
    2022-05-05
  • Docker项目部署之从后端到前端部署详细流程

    Docker项目部署之从后端到前端部署详细流程

    在当今的软件开发领域,容器化技术已经成为了部署和管理应用程序的重要手段,下面这篇文章主要给大家介绍了关于Docker项目部署之从后端到前端部署的相关资料,需要的朋友可以参考下
    2024-08-08

最新评论