假设本地 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 : 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. (default, Mar  , ::)

[GCC 7.3.] :: Anaconda, Inc. on linux

Type "help", "copyright", "credits" or "license" for more information.

>>> import xgboost

Traceback (most recent call last):

  File "<stdin>", line , 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---:~# docker start -i AnacondaEnvironment

(base) root@cc432d1f6b13:/# python

Python 3.7. (default, Mar  , ::)

[GCC 7.3.] :: 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  --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---:~# 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.

其中:

new_anaconda_xgboost:latest   

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

nimendavid/machine_learning:v0.   

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

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

docker login

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

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

登出 dockerhub:

docker logout

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

使用Anaconda3的Docker镜像的更多相关文章

  1. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  2. 理解Docker(2):Docker 镜像

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  3. 如何合并两个Docker 镜像

    http://www.open-open.com/lib/view/open1437746544709.html 在你的机器上使用docker pull来从Docker Hub下载镜像. docker ...

  4. Docker镜像的管理和创建

    1. Docker镜像和Docker容器:      Docker镜像实际上是一系列的文件系统,通常的Linux系统一般是两层文件系统,bootfs和rootfs,bootfs就是bootloader ...

  5. docker 源码分析 四(基于1.8.2版本),Docker镜像的获取和存储

    前段时间一直忙些其他事情,docker源码分析的事情耽搁了,今天接着写,上一章了解了docker client 和 docker daemon(会启动一个http server)是C/S的结构,cli ...

  6. docker使用阿里云Docker镜像库加速

    官方镜像下载实在是慢,于是开通了阿里云开发者帐号, 官方帮助 阿里云Docker镜像库 阿里云容器Hub服务:http://dev.aliyun.com/search.html 来自云端的容器Hub服 ...

  7. 第四章 使用Docker镜像和仓库(二)

    第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...

  8. 第四章 使用Docker镜像和仓库

    第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...

  9. 将 ASP.NET Core 1.0 应用作为 docker 镜像发布 (Linux版)

    var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...

随机推荐

  1. jimdb压测踩坑记

    本文记录在jimdb压测过程中遇到的各种小坑,望能够抛砖引玉. 1.压测流量起来后,过了5分钟左右,发现ops突降,大概降了三分之一,然后稳定了下来 大概原因:此种情况,jimdb极有可能某个分片的连 ...

  2. C# sync/async 同步/异步

    同步方法 Console.WriteLine($")} {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}******* ...

  3. java---时间戳

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" );// 格式化时间Date date = ne ...

  4. jvm虚拟机笔记<三> 类文件结构与类加载机制

    java虚拟机具有语言无关系,它只和“class文件“这种特定的二进制文件格式绑定. 不同语言的编译器将对应的程序编译成字节码文件(*.class),送给jvm执行. class文件本质上就是一张表, ...

  5. Linux(三)

    1.用户与用户组        Linux系统是一个多用户.多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员(root)申请一个账号,然后以这个账号的身份进入系统.       ...

  6. VUE,基于vue-cli搭建创建vue项目

    前提:必须安装node.js,官方地址:https://nodejs.org/en/ 然后安装vue-cli 安装方式:cmd命令行安装:打开cmd命令符输入进行全局安装脚手架:npm install ...

  7. asp.net允许跨域配置web.config

    <configuration> <system.webServer> <modules> <add name="CultureAwareHttpMo ...

  8. 最近几周,写了个微信好友检测助手App

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/130 微信好友检测助手App 最近几周,写了个微信好友检测 ...

  9. git命令行的颜色配置

    Git颜色branch,diff,interactive,status配置,git终端配置颜色,git命令行高亮 Git默认的输出是单一颜色的,感觉很不容易阅读,Git支持用多种颜色来显示其输出的信息 ...

  10. Linux后台运行和关闭jar项目

    直接用java -jar xxx.jar,当退出或关闭shell时,程序就会停止掉.以下方法可让jar运行后一直在后台运行. java -jar server.jar & 如果想要关闭java ...