本文主要列出从安装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-world
docker images
docker 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 miniconda
docker pull continuumio/miniconda3
docker 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 miniconda
docker pull continuumio/miniconda3
docker 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 list
conda 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