保存conda的虚拟环境到docker hub

由于自己最近mentor要求保存conda环境到docker hub,以下记录自己的踩坑过程和部署过程。

Docker 安装和使用

此部分主要参考Docker官方文档:https://docs.docker.com/engine/install/ubuntu/
Ubuntu Docker安装

bug: Get Permission Denied

原因
摘自docker mannual上的一段话

Manage Docker as a non-root user

The docker daemon binds to a Unix socket instead of a TCP port. By default that Unix socket is owned by the user root and other users can only access it using sudo. The docker daemon always runs as the root user.

If you don’t want to use sudo when you use the docker command, create a Unix group called docker and add users to it. When the docker daemon starts, it makes the ownership of the Unix socket read/writable by the docker group.

解决办法

  1. 使用sudo获取管理员权限,运行docker命令

    #如下命令可以正常执行
    sudo docker run ubuntu:15.10 /bin/echo "Hello world"
    
  2. docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令。

    sudo groupadd docker     #添加docker用户组
    sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
    newgrp docker     #更新用户组
    docker ps    #测试docker命令是否可以使用sudo正常使用
    

搜索可用镜像

docker search anaconda

拉取你中意的镜像

docker pull continuumio/anaconda3

我这里因为要存储conda的环境,所以我pull的是anaconda,也可以搜索到其他的docker的环境,例如

docker pull ubuntu:18.4 # 18.4为版本号

启动该镜像并且运行bash命令:

docker run -it continuumio/anaconda3 /bin/bash

环境封装

制作镜像

记新打包成的镜像名为new_anaconda

sudo -s
docker pull continuumio/anaconda3
docker run -it --name new_anaconda continuumio/anaconda3 /bin/bash

激活new_anaconda

docker start new_anaconda

进入new_anaconda

docker contain new_anaconda
  • 执行whereis anaconda可知容器中anaconda的路径为/opt/conda/envs 在查找到的anaconda路径下,创建新的为env的路径 cd /opt/conda/envs,此时还没有创建环境,ls为空。
    新建一个终端,查找到系统内安装的anaconda3环境路径,一般在your_anaconda3_path/envs,这里有你创建好的环境。
  • 通过docker cp指令,将系统中的环境全部复制到docker的anaconda3环境路径下,此时docker中的anaconda已经可以使用配好的环境了,可以用 source activate 指令自行证实一下。
docker cp your_anaconda3_path/envs/envs_name container_name:/opt/conda/envs `

导出镜像

  • 记导出的镜像名字为new_anaconda_image
docker commit new_anaconda new_anaconda_image
docker save new_anaconda_image -o new_anaconda_image.tar

注意:一定要导出为.tar文件格式

  • 在新服务器上导入镜像
sudo -s
docker load < new_anaconda_image.tar

修改docker container名字

后面push的时候需要修改,这里先不管。

上传image到docker hub

  1. 注册docker hub:https://hub.docker.com/
  2. 把 Docker Image Push 到 Docker Hub 上
    打開 terminal 輸入docker images,畫面如下:
    在这里插入图片描述
    要把 Docker Image Push 到 Docker Hub 上,需要把 Docker Image 加上 tag,如下指令:
$ docker tag mytomcat jackyohhub/mytomcat

使用的Docker tag格式如下:
docker tag ${Image Name} DockerHub帳號/Image Name
執行結果的畫面如下:
在这里插入图片描述 3. 輸入docker login指令登入到 Docker Hub
4. 使用 docker push 指令把 Docker Image Push 到 Docker Hub。

测试

把docker pull下来

$ docker pull jackyohhub/mytomcat

啟動 Docker Container,指令如下

docker run -p 8080:8080 jackyohhub/mytomcat

啟動完成之後就可以使用 Browser 查看結果,輸入 URL 位址為 http://localhost:8080 可以看到是否成功。

参考

1. 记录一次将本地的基于Anaconda的Pytorch开发环境打包成Docker镜像并迁移到其他服务器上的全过程
2. 如何将anaconda中的环境封装成docker
3. Day6:把 Docker Image Push 到 Docker Hub

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值