使用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 : 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镜像的更多相关文章
- MySQL、MongoDB、Redis数据库Docker镜像制作
MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...
- 理解Docker(2):Docker 镜像
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- 如何合并两个Docker 镜像
http://www.open-open.com/lib/view/open1437746544709.html 在你的机器上使用docker pull来从Docker Hub下载镜像. docker ...
- Docker镜像的管理和创建
1. Docker镜像和Docker容器: Docker镜像实际上是一系列的文件系统,通常的Linux系统一般是两层文件系统,bootfs和rootfs,bootfs就是bootloader ...
- docker 源码分析 四(基于1.8.2版本),Docker镜像的获取和存储
前段时间一直忙些其他事情,docker源码分析的事情耽搁了,今天接着写,上一章了解了docker client 和 docker daemon(会启动一个http server)是C/S的结构,cli ...
- docker使用阿里云Docker镜像库加速
官方镜像下载实在是慢,于是开通了阿里云开发者帐号, 官方帮助 阿里云Docker镜像库 阿里云容器Hub服务:http://dev.aliyun.com/search.html 来自云端的容器Hub服 ...
- 第四章 使用Docker镜像和仓库(二)
第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...
- 第四章 使用Docker镜像和仓库
第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...
- 将 ASP.NET Core 1.0 应用作为 docker 镜像发布 (Linux版)
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
随机推荐
- Pikachu-File Inclusion, Unsafe file download & Unsafe file upload
Pikachu-File Inclusion, Unsafe file download & Unsafe file upload 文件包含漏洞 File Inclusion(文件包含漏洞)概 ...
- springboot 读取 resource 下的文件
ClassPathResource classPathResource = new ClassPathResource("template/demo/200000168-check-resp ...
- 封装和@property
封装和@property 一.复习 1.接口类和抽象类 python中没有接口类,有抽象类,abc模块中的metaclass=ABCMeta,@abstructmethod,本质是做代码规范用的,希望 ...
- Kafka实战(七) - 优雅地部署 Kafka 集群
既然是集群,必然有多个Kafka节点,只有单节点构成的Kafka伪集群只能用于日常测试,不可能满足线上生产需求. 真正的线上环境需要考量各种因素,结合自身的业务需求而制定.看一些考虑因素(以下顺序,可 ...
- finger
finger <username> 显示用户信息,包括用户的home目录,上一次登录的时间,默认shell等 finger XXXXX #输出: #Login: XXXXX Name: X ...
- WebShell代码分析溯源(九)
WebShell代码分析溯源(九) 一.一句话变形马样本 <?php $e = $_REQUEST['e'];$arr = array($_POST['pass'] => '|.*|e', ...
- C#中类的实例化过程
创建某个类型的第一个实例时,所进行的操作顺序为:1.静态变量设置为02.执行静态变量初始化器3.执行基类的静态构造函数4.执行静态构造函数5.实例变量设置为06.执行衯变量初始化器7.执行基类中合适的 ...
- Redis速记
参考: 集群 https://blog.csdn.net/xiaoxiaoyusheng2012/article/details/82051744 主从 https://blog.csdn.net/u ...
- 中小后台系统UI框架--EasyUI
后台开发人员不擅长前端UI界面,而小型软件公司没有专职美工岗位,开发人员只能借助开源UI框架,复用已有组件,完成用户操作界面.EasyUI是基于jQuery的UI插件集合体,可帮助开发者轻松构建网页. ...
- SpringBoot 日志系统
日志框架 开发一个大型系统的简易步骤: system.out.println("..") 将关键的数据在控制台输出 框架记录系统的一些运行时的信息,---日志框架. 牛逼的功能-- ...