云计算百科
云计算领域专业知识百科平台

【小白日记】本地环境移到服务器上(docker+conda)

问题描述:本地anaconda配好了某代码所需环境,需要把代码放到服务器上跑。

策略:服务器上已有docker(和nvidia-docker),考虑将本地环境配置为镜像,上传到服务器后加载镜像,用容器跑代码

省流:不可避免地重新“配了一遍环境”(安装相应的包)

【最终成功的流程】

  • 0-准备requirements.txt

    • pip freeze > requirements.txt 从本地相应的anaconda环境中导出requirements.txt备用
  • 1-从云端拉取含anaconda的镜像

    • 更常见的情况是首先下载含对应版本pytorch的镜像,用来跑深度学习代码,参考:【10分钟学会Docker的安装和使用_docker安装-CSDN博客】【5 DIY一个自己的pytorch镜像】
    • docker pull continuumio/anaconda3
      • 我用 docker search 其实没有搜到,但【(本人自用)将本地的anaconda环境封装到docker中并导出为压缩包_anaconda3环境迁移到docker-CSDN博客】和【学习记录:docker 下部署anaconda – 知乎 (zhihu.com)】里给出的都是这个镜像,最后我也pull成功了
  • 2-在含anaconda的镜像上构建容器

    • docker images 查看当前有哪些镜像
    • docker run –name test240912 -idt continuumio/anaconda3 构建名为test240912的容器
  • 3-进入容器,在容器中创建指定python版本的虚拟环境

    • docker ps查看当前正在运行的容器,docker ps -a查看所有容器(包括没在运行的)
    • docker exec -it test240912 /bin/bash 进入容器test240912,命令行控制(bash)
    • 进入容器后可以用conda env list查看conda配置是否正确,输出“base”环境即为正常
    • conda create –name my_new_env python=3.8 创建一个python版本3.8的虚拟环境,名为my_new_env
    • conda activate my_new_env 激活my_new_env环境
    • 参考事先准备的requirements.txt,pip install {包名} 或 conda install {包名}
      • 为什么不直接pip install -r requirements.txt?因为我没成功
      • 如果想尝试直接pip install 所有包,需要先将requirements.txt复制到容器中
      • docker cp /path/to/local/requirements.txt test240912:/path/to/where/you/like
  • 4-在容器中配好环境后,将容器保存为新的镜像

    • docker commit -m=‘对镜像的描述’ -a=‘作者’ {当前容器名} {新镜像的命名}
    • 例如 docker commit -m=‘对镜像的描述’ -a=‘作者’ test240912 new_image:v1
  • 5-将镜像保存为tar文件

    • docker save new_image:v1 -o new_image.tar
  • 6-将tar文件传到服务器上,并加载为镜像

    • docker load -i new_image.tar
  • 7-在服务器上使用docker镜像

    • nvidia-docker run –gpus all -idt -v /path/to/local/dir:/path/to/dir/in/container –name container-on-server new_image:v1 创建容器,-v实现本地和容器中的文件通信(同步)
      • 要用nvidia-docker命令,不要用docker命令,否则无法正常使用GPU
    • nvidia-docker exec -it container-on-server /bin/bash 进入容器
    • 进入容器后,conda activate 相应环境,结束
赞(0)
未经允许不得转载:网硕互联帮助中心 » 【小白日记】本地环境移到服务器上(docker+conda)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!