zoukankan      html  css  js  c++  java
  • 使用Anaconda3的Docker镜像

    假设本地 Ubuntu 服务器已经安装好了Docker,这里讲述一下如何开始运行Anaconda3的Docker镜像:

     

    1. 搜索镜像

    搜索我们想要的anaconda镜像:

    docker search anaconda

    2. 拉取镜像

    我们决定拉anaconda3官方镜像,即 

    continuumio/anaconda3 这个镜像:

    docker pull continuumio/anaconda3

    注意,这个镜像大小接近1GB,所以时间比较长。

    3.运行镜像,指定网络端口

    运行 anaconda3 镜像的bash命令行,其中指定容器到宿主机的端口映射:

    docker run -i -t -p 12345:8888 continuumio/anaconda3 /bin/bash

    其中:

    -i: 是  以交互模式运行容器,通常与 -t 同时使用;

    -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    -p: 指定端口映射,格式为:主机(宿主)端口:容器端口

    具体数字随便写的...

    即可进入anaconda3的命令行。

    4. 检查Python的版本

    python

    当前是3.7.3版本

    5. 查看已经安装的库

    有两种查看方法,pip 和 conda 均可

    conda list
    pip list

     

    6. 安装xgboost(或者其他包)

    首先,原始镜像应该是不带xgboost的,测试一下:

    (base) root@4e0533451e3a:/# python
     
    Python 3.7.3 (default, Mar 27 2019, 22:11:17)
     
    [GCC 7.3.0] :: Anaconda, Inc. on linux
     
    Type "help", "copyright", "credits" or "license" for more information.
     
    >>> import xgboost
     
    Traceback (most recent call last):
     
      File "<stdin>", line 1, in <module>
     
    ModuleNotFoundError: No module named 'xgboost'

    说明 xgboost 没有被安装,那按 ctrl+z 退出python环境,我们来安装xgboost:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xgboost

    顺利安装完毕,就可以调用 xgboost 了,如图:

    7. 给anaconda镜像改名:

    首先我们需要给容器重命名,为了以后使用方便。

    原来运行 anaconda镜像 的容器名称叫做 4e0533451e3a ,我们改名叫做AnacondaEnvironment。

    docker rename cc432d1f6b13 AnacondaEnvironment

    8. 重新运行改名后的镜像:

    docker start -i AnacondaEnvironment

    测试是不是有xgboost:

    root@hz-sjfx-test-199-138-5:~# docker start -i AnacondaEnvironment
     
    (base) root@cc432d1f6b13:/# python
     
    Python 3.7.3 (default, Mar 27 2019, 22:11:17)
     
    [GCC 7.3.0] :: Anaconda, Inc. on linux
     
    Type "help", "copyright", "credits" or "license" for more information.
     
    >>> import xgboost
     
    >>> xgboost.__version__
     
    '0.90'

    成功!

    9. 在该容器中运行jupyter notebook:

    之前我们已经指定了宿主机的端口和容器的端口相互映射,其中:

    宿主机的端口是:12345

    容器的端口是:8888

    在容器中启动 jupyter notebook:

    jupyter notebook --port 8888 --ip 0.0.0.0 --allow-root

    这时候复制:

    http://127.0.0.1:8888/?token=a6b3189e8f96802b6d193475f0e30908c3a2e16816e1a444

    并且把前面的127.0.0.1:8888(容器的ip和端口)改为宿主机的ip和8888映射到宿主机的端口12345:

    http://10.199.138.5:12345/?token=a6b3189e8f96802b6d193475f0e30908c3a2e16816e1a444

    然后在本地浏览器中打开即可:

    成功运行!

    10. 把当前容器打包为新的镜像:


    当前我们对原始的 anaconda3 镜像做了一些改动:

    • 安装了xgboost
    • 安装了lightgbm
    • 随意新建了一个ipynb文件

    然后我们想把当前容器状态打包为新的镜像,这样以后我们就可以部署到其他地方了,而不用再安装xgboost等等。

    使用 docker commit 命令来将容器打包为镜像:

    root@hz-sjfx-test-199-138-5:~# docker commit --help
     
    Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
     
    Create a new image from a container's changes
    Options:
      -a, --author string    Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
      -c, --change list      Apply Dockerfile instruction to the created image
          --help             Print usage
      -m, --message string   Commit message
      -p, --pause            Pause container during commit (default true)

    我们的容器名字叫 id 是 cc432d1f6b13,所以:

    docker commit -a "nimendavid" -m "nimendavid's first docker image based on Anaconda3 with xgboost and lightgbm" cc432d1f6b13 new_anaconda_xgboost

    其中:

    -a "nimendavid"   指的是作者
    
    -m "nimendavid's......lightgbm"  指的是说明comment
    
    cc432d1f6b13  指的是容器的短id,可以从命令行看出
    
    new_anaconda_xgboost 指的是我们打包的新镜像的名称
    
     

    现在应该就打包成功了。

    11. 查看新镜像:

    docker image ls

     我们可以看见第一条镜像就是我们刚刚打包好的镜像,有整整 3.05GB 大。

    12. 将打包好的新镜像上传到 Docker Hub:

    首先我们需要将这个新镜像打上 tag,方便在公共服务器进行上传:

    docker tag new_anaconda_xgboost:latest nimendavid/machine_learning:v0.1

    其中:

    new_anaconda_xgboost:latest   

    格式是 本地镜像名称:tag ,可以通过 docker image ls 查看

    nimendavid/machine_learning:v0.1   

    格式是 dockerhub用户名/仓库名:tag  ,需要自己有一个dockerhub账号,v0.1就是自定义的版本号码 

    然后记得登录在服务器上dockerhub,否则推送会报错:

    docker login

    最后push本地镜像到dockerhub即可,记得退出dockerhub的登录:

    推送还是比较慢的...耐心等待

    登出 dockerhub:

    docker logout

    转自:https://blog.csdn.net/qq_27469517/article/details/100928433

  • 相关阅读:
    智能推荐算法演变及学习笔记(三):CTR预估模型综述
    从中国农业银行“雅典娜杯”数据挖掘大赛看金融行业数据分析与建模方法
    智能推荐算法演变及学习笔记(二):基于图模型的智能推荐(含知识图谱/图神经网络)
    (设计模式专题3)模板方法模式
    (设计模式专题2)策略模式
    (设计模式专题1)为什么要使用设计模式?
    关于macOS上常用操作命令(持续更新)
    记录下关于RabbitMQ常用知识点(持续更新)
    EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
    SpringCloud教程二:Ribbon(Finchley版)
  • 原文地址:https://www.cnblogs.com/zmdComeOn/p/11967738.html
Copyright © 2011-2022 走看看