docker + miniconda + python 环境安装与迁移(详细版)

本文主要列出从安装docker+python环境到迁移环境的整体步骤。windows与linux之间进行测试。

简化版可以参考:docker + miniconda + python 环境安装与迁移(简化版)-CSDN博客

目录

一、docker 安装和测试

二、docker中拉取miniconda,并虚拟环境安装和测试

三、环境+代码的迁移并运行(以linux _to_win举例)

大概的过程手绘了一下:


一、docker 安装和测试

【linux端】

可以参考其他教程,不在此赘述,以windows端举例。

【windows端】

我的是windows10 家庭中文版,docker 安装和测试部分的详情 可以参考:

【Docker】Windows11操作系统下安装、使用Docker保姆级教程_docker windo11-CSDN博客

1. ​​​​​​安装docker windows 版本

下载链接:Docker Desktop: The #1 Containerization Tool for Developers | Docker

安装后重启登录账号,大概率会报错,报的错是”unexpected wsl error“

2. 配置本机电脑,解决上述错误

我的是windows10 家庭中文版,核对:

控制面板--程序--开启或关闭windows功能,如果没勾选,请勾选上这俩。

然后:

# powershell进去后,输入命令
wsl --update# 安装后查看版本,显示“默认版本:2”
wsl --status

注意:启动成功后,我没有再安装linux发行版。有需要的也可以再装一个。

在 Windows Subsystem for Linux (WSL) 中,当你启用了WSL功能后,你需要从Microsoft Store中下载并安装所需的Linux发行版。WSL并不自带任何Linux发行版,而是提供了一个框架,允许用户选择并安装自己喜欢的发行版。你可以从 Microsoft Store 中搜索并下载你需要的 Linux 发行版,比如 Ubuntu、Debian、OpenSUSE 等。安装完所选发行版后,你就可以通过启动WSL来访问和使用它了,而无需再次安装或配置发行版。

3. 测试docker

# cmd进去后,输入命令,进行测试docker pull hello-worlddocker imagesdocker run hello-world# 列出所有容器
docker ps -a# 列出正在运行的容器
docker ps -q# 查看指定容器
docker ps -a|grep xxx# 暂停/停止/重启 某容器
docker pause/stop/restart 具体的CONTAINER ID# 删除容器
docker rm 具体的CONTAINER ID# 删除镜像
docker rmi Image_ID

如果pull很慢的话,可配置阿里云镜像加速, 记得在false后面加英文","

# 填入内容
"registry-mirrors": ["https://inhj05a1.mirror.aliyuncs.com"]

二、docker中拉取miniconda,并虚拟环境安装和测试

【windows端】

1. 安装miniconda

docker search minicondadocker pull continuumio/miniconda3docker run -it --name="miniconda" continuumio/miniconda3 /bin/bash

2. 【测试】创建新环境 for test

# 下面就和直接在没有docker的环境中一样操作了
(base) root@de9f167d9176:/# conda create -n test python=3.8(base) root@de9f167d9176:/# conda activate test
(test) root@de9f167d9176:/# conda env list

可以在这个环境中,继续用conda install 或者pip install安装其他包。

conda install numpy=1.93
pip install numpy==1.93

【linux端】和windows一样的

1. 安装miniconda和python环境

# step1
docker search minicondadocker pull continuumio/miniconda3docker run -it continuumio/miniconda3 /bin/bash# step2
conda create -n test_l python=3.8
conda activate test_l# step3, 退出镜像的conda环境
exit

**在这步里,只需要拉取了continuumio/miniconda3就可以了,不用创建新环境,如果创建了新环境,在退出continuumio/miniconda3这个容器之前,就需要把创建了新环境之后的continuumio/miniconda3保存成新的镜像,不然下次再进来,这次创建的新环境就不见了。

**我们更习惯在本地搞一个miniconda,所有环境都在里面,然后当需要打包的时候,在本地将要打包的环境复制到continuumio/miniconda3中。具体看下面的步骤三。

三、环境+代码的迁移并运行(以linux _to_win举例)

1、本地miniconda及虚拟环境安装

先在github上建仓库,然后git clone到linux中后,在本地创建一个环境,然后测试通过。

# 下载project
cd 目标文件夹
git clone 网址# 安装miniconda,参考官网
mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh~/miniconda3/bin/conda init bash# 建立本地环境
conda create -n test python=3.8
conda activate test
conda env listconda deactivate

2、在本地环境中,复制环境+代码到docker的容器中

比较详细的介绍可以参考:

Docker 封装anaconda环境,生成镜像并打包,纯小白一文读懂(二)_continuumio/anaconda3-CSDN博客

# 创建一个名为test的容器
docker run --name test -idt continuumio/miniconda3*****************查看容器, 找到conda的路径************
# 进入容器
docker exec -it test /bin/bash# 查看base所在路径
conda env list# 快捷键退出容器,不会停止容器
ctrl+d # 用exec进入容器,在使用快捷键退出容器时,不会停止容器。所以最开始才使用-idt创建
# 因为 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec*****************查看容器************
# 复制本地的环境到test容器中
docker cp /home/.../miniconda3/envs/test/ test:/opt/conda/envs# 复制代码
docker cp /home/.../neuron_segment test:/root/**************查看容器*************
docker exec -it test /bin/bash
conda env list
ls /root/
ctrl+d 
**************查看容器*************

至此,环境+代码也已复制成功。

3、将容器保存为镜像,保存成压缩包

# 将容器保存为镜像,并查看
docker commit -a 'author' -m 'instruction' test image_test# cd到一个目录
cd ...# 压缩镜像
docker save -o test_tar.tar image_test

至此,环境+代码也已打包成功。

4、解压镜像、创建容器、测试代码

# 拷贝.tar文件到指定目录# 在win这边/要运行的机器上cmd后,cd到上面的指定目录
# if win
cd /d 目录# 解压,查看后发现,已创建了一个新的image_test的镜像
docker load -i test_tar.tar

# 创建容器
docker run --name test_create -idt image_test**************进入容器*************
docker exec -it test_create /bin/bash
conda env list
ls /root/
# 测试代码
conda activate test
cd /root/文件夹目录
python **.py

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

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

相关文章

vscode 连接远程服务器 服务器无法上网 离线配置 .vscode-server

离线配置 vscode 连接远程服务器 .vscode-server 1. .vscode-server下载 使用vscode连接远程服务器时会自动下载配置.vscode-server文件夹,如果远程服务器无法联网,则需要手动下载 1)网址:https://update.code.visualstudio.com…

ICP备案工信部短信核验怎么看是否成功?

备案短信核验怎么看是否成功?在工信部官网输入6位短信验证码、手机号和身份证号后,点击提交,会返回尊敬的ICP用户: 您的短信核验已全部完成,该请求将提交管局审核。如下图: 尊敬的ICP用户: 您的短信核验已全…

ArcGis研究区边界提取

ArcGis研究区边界提取 *0* 引言*1* 有的步骤0 引言 GRACE数据处理前要先确定研究范围,而大多情况下所选的研究区都是有特殊意义的,比如常年干旱、经济特区、降水丰富等,这些区域往往有精确的边界,那就要从大的区块中将研究范围抠出来,获取相应坐标,以量化区域重力变化。那…

蓝桥集训之斐波那契数列

蓝桥集训之斐波那契数列 核心思想&#xff1a;矩阵乘法 将原本O(n)的递推算法优化为O(log2n) 构造1x2矩阵f和2x2矩阵a 发现f(n1) f(n) * a 则f(n1) f(1) * an可以用快速幂优化 #include <iostream>#include <cstring>#include <algorithm>using na…

白嫖 kimi.ai 的 API 接口,给这个开源项目点赞!

Kimi 是当前国内相当火爆的 AI 产品&#xff0c;输出结果和使用体验都非常不错。 Kimi 开放了 API 接口&#xff0c;新用户注册后会免费赠送 15 元额度。 Kimi API 的网址&#xff1a; platform.moonshot.cn/console 这是光明正大的白嫖方式&#xff0c;一定不要错过哦。 如…

Acwing.504 转圈游戏(带取余的快速幂)

题目 n个小伙伴&#xff08;编号从 0到 n−1&#xff09;围坐一圈玩游戏。 按照顺时针方向给 n个位置编号&#xff0c;从 0到 n−1。 最初&#xff0c;第 0号小伙伴在第 0号位置&#xff0c;第 1号小伙伴在第 1号位置&#xff0c;…&#xff0c;依此类推。 游戏规…

[Go运行问题]/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_xx‘ not found

问题描述 在一台ubuntu 20的机器上通过go 编译生成的可执行程序(使用了cgo)&#xff0c;在其他ubuntu机器上运行时出现如下问题 /lib/x86_64-linux-gnu/libc.so.6: version GLIBC_2.32 not found 问题分析 因为go代码里的依赖库使用到了sndfile&#xff0c;它必须使用cgo了…

【机器学习300问】61、逻辑回归与线性回归的异同?

本文讲述两个经典机器学习逻辑回归&#xff08;Logistic Regression&#xff09;和线性回归&#xff08;Linear Regression&#xff09;算法的异同&#xff0c;有助于我们在面对实际问题时更好的进行模型选择。也能帮助我们加深对两者的理解&#xff0c;掌握这两类基础模型有助…

算法设计与分析实验报告c++实现(排序算法、三壶谜题、交替放置的碟子、带锁的门)

一、实验目的 1&#xff0e;加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、 编…

计算机网络学习

OSI 七层模型 物理层&#xff08;Physical Layer&#xff09; 功能&#xff1a;处理与电气或物理规范的接口有关的细节&#xff0c;如电缆类型、电信号传输和接收、网络设备的物理特性等。设备&#xff1a;包括网线、光纤、集线器等。 数据链路层&#xff08;Data Link Laye…

rknn3588 yolov5 学习笔记

目录 多线程优化 yolov5_Deepsort_rknn 多线程优化 GitHub - leafqycc/rknn-cpp-Multithreading: A simple demo of yolov5s running on rk3588/3588s using c (about 142 frames). / 一个使用c在rk3588/3588s上运行的yolov5s简单demo(142帧/s)。 模型\线程数123456912Yolov…

数据库第四次作业

该次作业是在课后习题的基础上&#xff0c;混合&#xff0c;修改&#xff0c;增加得到的题目 注意把2017改成2019 第一题 Consider the insurance database of Figure 3.17, where the primary keys are underlined. Construct the following SQL queries for this relationa…

AcWing---公约数---最大公约数

4199. 公约数 - AcWing题库 思路&#xff1a; 最大整数x一定是最大公约数的因数&#xff0c;所以先用__gcd(a,b)求出a和b的最大公因数&#xff0c;再用O(log(n))的算法求出最大公因数的因数&#xff0c;放到vector中&#xff0c;并将vector排序。利用STL中的upper_bound(res.…

Star GAN论文解析

论文地址&#xff1a;https://arxiv.org/pdf/1912.01865v1.pdf https://openaccess.thecvf.com/content_cvpr_2018/papers/Choi_StarGAN_Unified_Generative_CVPR_2018_paper.pdf 源码&#xff1a;stargan项目实战及源码解读-CSDN博客 1. 概述 在传统方法中&#x…

游戏引擎之高级动画技术

一、动画混合 当我们拥有各类动画素材&#xff08;clips&#xff09;时&#xff0c;要将它们融合起来成为一套完整的动画。 最经典的例子就是从走的动画自然的过渡到跑的动画。 1.1 线性插值 不同于上节课的LERP&#xff08;同一个clip内不同pose之间&#xff09;&#xff…

JVM 内存溢出排查

说明&#xff1a;记录一次JVM内存溢出的排查过程&#xff1b; 场景 项目开发完成后&#xff0c;首次提交到测试环境。测试、产品同事反馈页面先是操作响应慢&#xff0c;抛出超时异常&#xff0c;最后直接无法使用。查看日志后得知是内存溢出。 重启服务后&#xff0c;我对前…

Linux Summary of My Own - Big

DIY Linux Summaries I) Command Lines1.1) difference between "escshifti" and "escshifta"1.2) how to use escape character to have computing on multiplication1.3) file types in Linux I) Command Lines 1.1) difference between “escshifti” …

c语言库函数:时间相关time,localtime,asctime

目录 1.引言 2.时间函数基本信息 2.1 time函数 2.2 local函数 2.3 asctime函数 3.使用demo 1.引言 很多时候&#xff0c;我们需要使用当前时间&#xff0c;怎么获取呢&#xff1f;其实c语言库函数中提供了一些列时间相关的函数&#xff0c;可以从系统中获取时间的方法。…

SV学习笔记(五)

线程的使用 程序和模块 module&#xff08;模块&#xff09;作为SV从verilog继承过来的概念&#xff0c;自然地保持了它的特点&#xff0c;除了作为RTL模型的外壳包装和实现硬件行为&#xff0c;在更高层的集成层面&#xff0c;模块之间也需要通信和同步。 对于硬件的过程块&…

如何物理控制另一台电脑以及无网络用作副屏(现成设备和使用)

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 控制另一台电脑有很多方法&…