Docker封装服务器anaconda环境镜像

第一次在实验室服务器上用docker封装镜像,把整个流程梳理如下

基本流程都是按照这篇博客走的Docker 封装anaconda环境,生成镜像并打包,纯小白一文读懂(二)_豆蔻二八的博客-CSDN博客

1. 拉取镜像

sudo docker pull continuumio/anaconda3

但是使用该命令会遇到报错: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers),也就是网络问题,尝试根据网上的教程更改镜像源:https://blog.csdn.net/u012081441/article/details/104553145

但最终同样报错,后来发现是由于服务器本身网络问题,因为目前服务器A是使用另一台B作为代理来上网,所以导致A上无法下载这个镜像(具体原因也不知道)。解决方法就是在B上拉取镜像,指令和上面一样。然后将镜像保存到一个tar文件中,指令如下:

sudo docker save continuumio/anaconda3 -o image.tar

其中image.tar为自定义的文件名。再使用scp指令将该文件中B传到A即可(同样需要sudo)。

在A上还需要对tar文件解压缩,如下:

sudo docker load -i image.tar

2. 创建容器

sudo docker run --name temp -idt continuumio/anaconda3

其中temp是自定义的容器名。创建容器后我们使用如下指令就可以进入容器:

sudo docker exec -it temp /bin/bash

再使用exit指令或者ctrl+d即可退出容器。

3. 拷贝环境以及代码

进入容器后我们可以查看容器中的conda目录:

conda info --envs

一般情况下目录是在/opt/conda下。接下来我们需要将我们的conda环境拷贝到这个目录下

sudo docker cp ${your_env_path} temp:/opt/conda/envs

其中${your_env_path}是你的环境目录,比如/home/xxx/anaconda3/envs/env1。

然后我们可以使用同样的方法将代码文件夹拷到容器中

 sudo docker cp ${your_code_path} temp:/root/

4. 保存镜像并获取压缩包

使用如下命令将上述的容器temp保存为服务器上的镜像

sudo docker commit -a 'author' -m 'instruction' temp image_temp

使用docker images指令即可在镜像列表里看到image_temp的镜像,然后我们使用和第1步中一样使用docker save指令将镜像保存到tar文件中,这个tar文件就是我们要的打包后的镜像文件。

注:tar文件没有对镜像做任何压缩,因此可能会很大。如果想要减小该文件大小,有两个办法,其一是减少环境文件夹的大小,比如删掉其中一些没用的库;其二是对tar文件进一步压缩,这样做最直接,效果也最显著。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值