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

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

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

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

【最终成功的流程】

  • 0-准备requirements.txt

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

  • 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 相应环境,结束
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值