Conda环境封装成docker镜像
conda环境如何封装给其他人用
背景:在我们开发完一个项目之后,为了使项目环境能够快速的转移,需要对环境进行打包封装。一般来说,我们有两条路可以选择。
第一种,采用conda本身的命令,输出 yaml文件以及txt文件。
#导出
conda env export > environment.yaml
pip freeze > requirements.txt
#导入
conda env create -n xx -f environment.yaml
pip install -r requirements.txt
但是,我执行这类方法之后,发现两类环境不对应,这主要是因为在导出和导入的时候,由于某些包长的异常,比如-spconv 又或者需要去github上下载,但是这类要么安装不上,要么对应的网址已经更新了,会导致封装失败。
结论:采用conda封装的方式进行迁移环境。
第二种,conda -> docker
首先,需要服务器上有安装docker,如果不是sudo用户的话,则普通用户应该被加入docker用户组。【docker ps 正常运行就可】
一、docker run 建立一个干净的docker环境(但是得带conda)
如果没有anaconda3,则pull一个下来
sudo docker pull continuumio/anaconda3
然后执行docker run命令
docker run -itd continuumio/anaconda3:pcdet3
接着我们就会进入到docker @后面跟的就是id
记住这个id
执行exit可以退出 如果忘了可以docker ps查看id
如果退出了可以执行这个再进入 【也可以去搜索docker attach 、 docker start 】
docker exec -it 镜像id bash
然后最后我们执行这个
其中 /home/youruser/anaconda3/envs/pv111 是自己用户的环境 【conda env list 可查】
384d44615250 是容器的id 【sudo docker ps 可查】
/opt/conda/envs/ 是docker里面anaconda的路径【whereis anaconda 可查】
sudo docker cp /home/ljh/anaconda3/envs/pv111 384d44615250:/opt/conda/envs/
tips:
如果想要采用docker 把普通用户加入群组 可以采用如下方式
#添加docker 用户组 这一步在目前的服务器上都不用执行 因为已经有了
sudo groupadd docker
#加入用户 $USER 是你要加的用户
sudo gpasswd -a $USER docker
【但是! 这样在我们的服务器上仍然行不通,为什么呢,因为docker权限(docker.sock就是这个文件)对群组用户是770 意思就是你不可执行,但是像下面这样,就可以让群组的普通用户也能用docker】
sudo chmod a+rw /var/run/docker.sock
更多推荐
所有评论(0)