2016 - 2024

感恩一路有你

docker映射的端口和挂载目录 迅雷云盘如何转存到阿里云盘?

浏览量:3314 时间:2023-08-20 07:17:00 作者:采采

迅雷云盘如何转存到阿里云盘?

迅雷云盘自动转存到阿里云盘的方法追加:

阿里云网盘支持webdav,所以我们这个可以用docker来把webdav跑起来,接着用raidrive携挂阿里云webdav,这样我们就是可以能够得到一个不被限速的数T容量的洋气网络硬盘。

接着给迅雷云盘开个月卡,去下载路径然后可以设置阿里云网络硬盘,就这个可以能做到疾速下载全速可以上传,一两天差不多吧就这个可以自动全部迁出完。

docker的工作模式?

(1)、拉取ubuntu镜像:docker检查本地是否存在地ubuntu镜像,如果就自动从dockerhub拉取,要是存在地就进入到然后再。

(2)、修改一个容器:那样一来本地存在地ubuntu镜像,docker将是从它来创建容器。

(3)、怎么分配文件系统并武器挂载一个RW层:容器是创建家族在文件系统中的,但是在其之上提高了一层读写层。可以见得容器并不会变化原始的镜像。

(4)、分配网络/桥接模式:修改一个桥接网络接口,使容器也可以和本地主机通过通信。

(5)、设置里一个IP地址:依据什么本地网络情况,选取范围一个可用的IP携挂到容器之上。

(6)、启动一个进程:这里那就是/bin/bash

(7)、直接抓取应用程序的输出:将程序的stdin、stdout、和stderr接受捕捉,这样的话就可以清晰的看到程序的运行情况。眼下,就占据了一个运行的容器。实际容器,可以运行程序,并且通过交互。当程序执行完毕,是可以停止下来和删除掉程序。

如何用Docker成为更高效的数据科学家?

使用Docker容器来变更土地性质机器学习模型的好处有很多。近日,GitHub的资深机器学习科学家HamelHusain在Towards Data Science上可以发表了一篇入门级的Docker容器教程,文章从基本上的概念谈起,清楚明白地推荐了Docker容器的一些基本是的操作和注意事项。机器之心对本文进行了编译介绍。本文所不属于的所有咨询代码请访问:_Tutorial

过去五年来,Docker容器竟已成了一个太热门词汇,似乎我的所有软件工程师朋友都在可以使用它们来开发应用。我想弄清这种技术可以不怎么让我更有效率,但我突然发现我在网上能找到的教程要么过多关注细节(讲解了一些我以及数据科学家绝应该不会不使用的功能),的话那就就过于深奥(没有加上的信息帮我解释如何迅速有效地不使用Docker)。

因为我写了这篇快速入门,这样的你没有必要自己去网上筛选信息就能怎么学习到快速上手Docker所是需要的一切。

Docker是什么?

你可以把Docker代入是轻量级的虚拟机——乾坤二卦你运行应用所不需要的一切。Docker容器是可以资源你的系统的状态的快照,这样其他人就也可以在用这个快照迅速重建后你的计算环境。这对本教程而言,这那就是你不需要了解的一切。更多具体点可以介绍可北方医话:

为么要可以使用Docker?

1.再现昔日性:才是专业的数据科学家,让你的结果能够重塑是非常重要的。再现性不但能增强同行评议,并且可以确保全你创建家族的模型、应用或分析是可以全程无障碍地正常运行,这能让你房屋交付的成果更相对稳健,更能承受时间的考验。举个例子,若果你用Python创建了一个模型,仅仅不运行condafreeze并将结果换取的requirements.txt文件发送中给你的同事是太少的,是因为其中只真包含特定的事件于Python的依赖条件——而虽然的依赖条件不只有一Python,也有操作系统、编译器、驱动程序、配置文件和你的代码成功了运行所需的其它数据。就算你只分享分享Python依恋条件也能成功,将所有东西都标准封装到一个Docker容器中那就能缓解其他人重建你的环境的负担,并让他们能更顺利地ftp访问你的成果。

2.计算出环境的可移植性:作为一位数据科学家,尤其是机器学习领域内的数据科学家,迅速变化你的计算环境的能力能够更大地影响大你的生产力。数据科学的正在工作经常会是原型设计、探索和研究——这些工作并不一定立马就是需要某一特定的计算资源。这个工作往往是在笔记本电脑或个人计算机上完成的。但在后面某个时候,你而不会不需要相同的计算资源来显著瞬间加速你的工作流程——诸如在用一些CPU或强大的GPU来不能执行深度学习等任务。我注意到很多数据科学家的原因感觉到了在辅助攻击机器上重建他们的本地环境的困难,就将自己局限于在了本地计算环境内。而Docker能让你的环境(你的所有库和文件等等)的移植的很简单。在Kaggle竞赛中,急速移植技术换算环境都是三个巨型的竞争优势,只不过你这个可以成本高效安全地借用AWS的即将到手计算资源。最后,修改Docker文件让你能移殖很多你喜欢的本地环境配置——例如bash别名或vim插件。

3.强化宠物你的工程能力:熟练使用Docker让你能将模型或分析部署成应用方法(比如用作提供给预测国家的REST API),最大限度地让其他人也能在用你的成果。况且,你在数据科学工作流程中肯定要与存在于Docker容器中的其它应用进行交互,比如说数据库。

Docker术语

在我们再继续进入到之前,清楚再看看Docker的术语会很有帮助:

·镜像(image):肯定是你想要创建战队的东西的蓝图。比如说:UbuntuTensorFlow,内带英伟达驱动程序和一个正常运行的Jupyter服务器。

·容器(container):是你基于的运行的镜像的实例化。你可以运行程序同一个镜像的多个副本。辨清镜像和容器之间的差异非常重要,是因为这是新入门者常常觉得混为一谈的两个概念。如果你不很清楚镜像和容器的差别,停下脚步接着读一次。

·Dockerfile:主要用于修改镜像的配方。Dockerfile包涵特珠的Docker语法。官方文档说:Dockerfile是一个文本文档,其中包含了用户是可以在命令行内部函数的为了组装成镜像的所有命令。

·commit:和git类似,Docker容器提供了版本控制。突然发生的改变,你在任何时间都这个可以将你的Docker容器的状态保存到为一个新镜像。

·DockerHub/ImageRegistry:人们可以不先发布可以公开(或私人)Docker镜像的地方,主要是用于促进合作与共享。

·层(layer):对均镜像的修改,由Dockerfile中的一个指令它表示。层按次序应用形式到基础镜像上,以创建出最终的镜像。

本文将在用这些术语,如果你在阅读时忘了,必须得回来一栏!这些术语很被混淆,尤其是在镜像和容器之间——因为你在阅读时要保持警惕!

安装好Docker

你也可以下载吧直接安装Docker社区版(Docker Community Edition),地址:

创建角色你的第一个Docker镜像

在创建家族Docker容器之前,修改一个将作用于定义法镜像的Dockerfile会很用处。我们先慢慢的解读一帮一下忙下面的Dockerfile。你也也可以在与本教程关联的GitHub库中能找到这个文件:

#reference:_/ubuntu/

acrossubuntu:16.04

#Addsmetadatato theimageas akeyvalue pair example LABEL version1.0

LABELmaintainerHamelHusain

##Setenvironmentvariables

ENV.UTF-8LC_ALLC.UTF-8

RUNapt-getversion--fix-missingampampapt-getinstall-ywgetbzip2ca-certificates

build-essential

byobu

curl

git-core

htop

pkg-config

python3-dev

python-pip

python-setuptools

python-virtualenv

unzip

ampamp

apt-getcleanampamp

rm-rf/var/lib/apt/lists/*

RUNechoexportPATH/opt/conda/bin:$PATHgtampamp

wget--quiet_-O~ampamp

/bin/bash~-b-p/opt/condaampamp

rm~

ENVPATH/opt/conda/bin:$PATH

movecprofile--no,no-cache-dirinstall--upgrade

multiprocessing

sklearn-pandas

#OpenPortsanyJupyter

EXPOSE7745

#SetupFile System

RUNmkdirds

ENVHOME/ds

ENV SHELL/bin/bashVOLUME /dsWORKDIR /dsADDpull_/ds/kick_

RUNchmodx/ds/pull_

#Runtheshell

CMD[./kick_]

from语句

outsideubuntu:16.04

outside语句中有了Docker最神异的部分。这个语句委托了你想在上面进行创建战队的基础镜像。是从使用returning指定你一个基础镜像,Docker将会在你的本地环境中去寻找名为ubuntu:16.04的镜像——要是它没有可以找到,它都会去搜索你指定的DockerRegistry,默认是DockerHub:。如果没有你需要你经常在你的Ubuntu等操作系统上安装程序,那么这种分层机制就很方便。你无需您费心从新开始完全安装Ubuntu,反而也可以再在官方的Ubuntu镜像上开发!DockerHub上托管中心着种类繁多的镜像,和那些不只不过需要提供了一个操作系统的镜像,比如说如果你是想一个早按装了Anaconda的容器,你也可以选择在官方的AnacondaDocker镜像上的新,地址:。最重要的是,你也是可以随时发布你构建的镜像,除非该镜像是在其它镜像上加层我得到的!这有无尽的可能性。

在这个案例中,我们委托基础镜像为ubuntu:16.04,它会直接搜索唤作ubuntu的DockerHub库(_/ubuntu/)。镜像名之后的部分16.04是重新指定了你打算完全安装的最基础镜像的版本的标签(tag)。假如你检索到一下UbuntuDockerHub库,你会尽量到有所不同版本的Ubuntu不对应于相同的tag:

2017年12月的官方UbuntuDockerHub库全屏截图

例如,ubuntu:16.04、ubuntu:xenial-20171201、ubuntu:xenial和ubuntu:latest也都是指16.04版的Ubuntu,它们都是同一个镜像的别名。此外,这里能提供的链接指向了按的Dockerfile,可主要是用于最终形成每个版本的镜像。总是你没能在DockerHub中找到Dockerfile,只不过维护者可以不自己选择是否是将关於这些镜像的创建角色的Dockerfile乾坤二卦冲进来。我个人都觉得泛读一些Dockerfile可促进血液循环更好地解释Dockerfile。(但别急,继续读这篇教程反正!)

你需要最重要的尽量一个标签,即:latest标签。这又是你在不为returning语句更改标签时系统默认pull的镜像。比如如果不是你的across语句是这样:

fromubuntu

后再你就将pullubuntu:16.04镜像。为么?——一遍看上面,你看的到:latest关联的是16.04.

关与Docker镜像到最后是需要注意的一些:在从DockerHubpull任务道具的Docker镜像时要决定明智之人的判断。有恶意的人修改的镜像有可能会包涵恶意软件。

LABEL语句

这个语句会为你的镜像再添加元数据,不过是全部可选的。我提升这个语句的目的是为了让别人明白是可以联系联系谁,同样也方便我收索我的Docker容器,尤其是在一个服务器上同时不运行着很多容器时。

LABELmaintainerHamelHusainltyouremailgt

ENV语句

ENV.UTF-8LC_ALLC.UTF-8

这让你这个可以改环境变量,但是非常真接,相关情况请北方医话:

RUN语句

这大多数是最必须花功夫的地方,能提供了你统合该Docker镜像所打算成功的任务。你可以不运行apt-get和pipinstall等任意的shell命令来安装好你需要的软件包和依赖包。

RUNapt-getsetup--fix-missingampampapt-getinstall-ywgetbzip2

build-essential

ca-certificates

git-core

...

在这里我按装了一些我喜欢的的实用工具,.例如tcpdump、htop、byobu,后再按装了Anaconda,之后还完全安装了一些基础Anaconda中没有的其它库(你可以在求完整的Dockerfile中查看其它RUN语句)。

RUN语句后的命令与Docker都没什么关系,只不过一些你在安装好这些软件包时是需要运行的都正常Linux命令,所以才就算你不认识这些软件包或Linux命令也最好别怀疑。同时,再给一个建议:当我最早正在学Docker时,我栏里点了GitHub或DockerHub上的其它Dockerfile,接着将我需要的部分直接复制粘贴到了我的Dockerfile。

你肯定特别注意到了RUN语句的格式。每个库或软件包都整齐的队列地通过了缩进,不过目的是可读性还按字母接受了排序。这是Dockerfile的普便惯例,因为我建议你也这样做希望能够合作。

EXPOSE语句

如果你想可以公开一个端口,这个语句会很有用吗——比如,如果你从该容器或某个网络服务内如何实施一个JupyterNotebook。Docker的文档蛮好地讲解了EXPOSE语句:

EXPOSE指令事实上完全没有发布该端口。它的功能是充当修改该镜像的人和运行该容器的人之间的一类文档,内容是关与不打算首页的端口。要换算首页该端口,现在就要在运行该容器时在dockerrun上不使用-p标志但是映射三个或多个端口,或则也这个可以不使用-P标志公告所有端口并将它们映射出到低阶端口。

VOLUME语句

VOLUME/ds

这个语句让你是可以在Docker容器和主机计算机之间互相访问数据。VOLUME语句让你可以不按装外部安装好的卷。主机目录仅有在容器正常运行时才明确说明(是因为你很有可能在有所不同的计算机上运行程序该容器),而不可能在符号表示镜像时声明*。目前你只指定了Docker容器内你想与主机容器网络共享的文件夹的名称。

Docker用户指南请解释说:

主机目录是在容器正常运行时声明的:主机目录(挂载点)本质上它取决于主机。这是是为绝对的保证镜像的可移植性,因为一个变量的主机目录不能只要在所有主机上都和用。由于这个原因,你肯定不能在Dockerfile中携挂主机目录。VOLUME指令不支持什么更改host-dir参数。你要在创建或运行容器时重新指定挂载点。

至于,这些卷的目的是将数据存放到容器的文件系统之外,当你要能操作大量数据但是不如果能你的镜像再次膨胀得很小时,这会很用处。当你保存一个Docker镜像时,在这个VOLUME目录中的任何数据都不可能被保存为该镜像的一部分,不过在这个容器目录之外的数据会被能保存。

WORKDIR语句

WORKDIR/ds

这个语句可以设置了工作目录,以便你在另一条新的命令中也可以不需要建议使用的确路径就能索引特定的文件。比如这个Dockerfile中的后来一条语句是:

CMD[“./kick_”]

该语句就默认假设工作目录是/ds

ADD语句

ADDrun_/ds/pull_

这条命令让你可以在Docker容器运行时将文件从主机计算机截图到该Docker容器。我建议使用这个命令来不能执行bash脚本这些将.bachrc文件等有用吗东西导入到容器中。

再注意这里的主机容器的路径根本不会几乎委托,而且其主机路径不是你在该容器正常运行时指定你的背景路径(contextdirectory)的低些路径(后面会再讨论)。

在我正常运行这个容器时,move_恰好在背景路径的根目录内,所以才在该源文件以前没有路径。

用户指南中可以介绍说:

ADD指令从ltsrcgt截图新文件、目录或近战文件URL并将它们直接添加到路径ltdestgt的镜像的文件系统中。

CMD语句

Docker容器的设计思想是这些容器是很短暂的,能可以保证运行完你想不运行的应用就行了。但在数据科学方面,我们并不一定我希望尽量这些容器一直都运行,就算它们之中并没有什么主动地地不运行着什么。很多人都按照运行bashshell来实现方法这一点(如果你中止它,不然的话它就肯定不会停止下来)。

CMD[“./move_”]

在上面的命令中,我运行了一个构造器一个JupyterNotebook服务器的shell脚本。但,如果没有你没有什么要运行程序的特定的事件应用而只不过想一直保持你的容器运行(而不后退),你也可以真接正常运行bashshell,只是使用100元以内命令:

CMD[/bin/bash]

这种方法是快速有效的,毕竟如果你再次,要不然bashshell就应该不会中止;而该容器会总是保持运行。

用户指南中推荐说:

在一个Dockerfile中只能有一个CMD指令。如果你列下了不只是一个CMD,这样仅有还有一个才有效。

CMD的主要目的是为一直在负责执行的容器需要提供默认配置。这些系统默认配置可能会中有一个可执行文件,的或也这个可以省略可执行文件,在那种情况下你还必须更改一个ENTRYPOINT指令。

创建角色你的Docker镜像Dockerfile中的信息可真够多的。千万不能着急,后面的内容就要比很简单啊了。现在我们巳经在Dockerfile中创建家族了我们的配方,是时候人类创造镜像了。你是可以通过以上命令能完成:

GitHub上也有:_Tutorial/blob/master/language_tutorial/build_

这会创建战队一个Docker镜像(而又不是容器;如果不是你不我记得这两者之间的差异,请查询资料文章前面的术语详细介绍),你是可以在后面运行程序这个镜像。

从你的Docker镜像创建战队和运行容器现在你巳经准备好好让这一切工作起来了!我们可以不通过想执行200以内命令来打开系统环境:

则是GitHub也有:_Tutorial/blob/master/symbolic_tutorial/running_

运行完这个命令之后,你的容器就启动出声了!Jupyter服务器也启动下来了,而且在该Dockerfile结果有这个命令:

CMD[“./kick_”]

现在你肯定也可以实际其使用的端口访问网络你的JupyterNotebook了——在这个案例中可按照:7745/访问,密码是tutorial。如果不是你是按照近战的正常运行这个Docker容器,你还必须设置里本地端口点赞和评论,这样的话你才能你的浏览器ftp连接你的Jupyter服务器。端口点赞和评论介绍:

与你的容器交互过程一但容器设置能够完成并运行起来,下面这些命令就有用不:

·为容器附加另一个新的终端会话。如果你要直接安装一些新软件或不使用shell,这会很有用。

·将你的容器的状态存放为新镜像。就算是你一又开始就在Dockerfile中配置了你想完全安装的所有库,随着时间的推移,你也很可能还是要对容器的状态参与不大的调整——是从交互来增强更大库和软件包。将你的容器的状态保存到为镜像是很用处不大的,你后面可以将其多多分享出去后或在上面加层。你这个可以不使用dockercommitCLI命令将容器状态存放为新镜像:

dockercommitltcontainer_namegtfifth_image_name:tag_name(可选的)

比如说,要是我想将名为container1的容器的状态能保存为名为hamelsmu/tutorial:v2的镜像,我可以不再运行程序这个命令:

dockercommitcontainer_1hamelsmu/tutorial:v2

你可能会好奇镜像名之前的hamelsmu/是什么——这只不过是替让之后将该容器推送消息到DockerHub的工作更稳当,而且hamelsmu是我的DockerHub用户名(后面会再谈这个问题)。假如你的工作内容要建议使用Docker,那就你的公司很可能会有一个内部私有的Docker库,你也也可以将你的Docker推送消息到那里。

·列个运行中的容器。当我忘记现在也在不运行的容器的名称时,我就经常会可以使用这个命令:

dockerps-a-fstatusrunning

假如你在使用该命令时还没有而且statusrunning,那你你变会注意到你系统上的所有容器的列表(除非早不再运行的容器也在)。这对里查旧容器而言很没有用。

·列出来你在本地保存到的所有镜像。

dockerimages

·将你的镜像推送内容到DockerHub(或其它地方)。如果你想与其他人分享你工作或将镜像能保存到云上,这个命令是会很用处。注意一点你在做这件事时可别分享任何私人信息(DockerHub上也有公私混合库)。

简单创建家族一个DockerHub库并给你的库起一个适度地的名称,参考这里:。接着要运行dockerlogin命令来直接连接到你在DockerHub或其它注册位置的账户。比如,要公众号推送一个镜像到这个容器(),我是需要要将我的本地镜像命令为hamelsmu/tutorial(我可以不你选输入标签名)。诸如,这个CLI命令就为:

dockerpushhamelsmu/tutorial:v2

将之前提起的Docker镜像推带到这个库,其标签为v2,参考:。要强调:如果你为了公开了你的镜像,那你其他人就这个可以然后在你的镜像上加层,那像本教程中我们在ubuntu镜像上加层差不多。相对于想再现或延伸你的研究的其他人来说,这相当用处不大。

你巳经完全掌握了现在你知道要如何不能操作Docker了,你可以不负责执行100元以内任务:

·与同事和朋友互相访问可重现的研究。

·将你的代码暂时迁移到所需的非常大的计算环境中,无关闭地赢得Kaggle竞赛。

·在你的笔记本电脑上的Docker容器内进行本地的原型开发,然后再不费吹灰之力地将则是的计算过程无缝技术迁出到服务器上,而也能记录你喜欢的本地环境配置(你的别名、vim插件、bash脚本、下拉菜单提示等)。

·在用Nvidia-Docker在GPU计算机上飞快构造函数运行TensorFlow、PyTorch或其它深度学习库所需的所有依恋包。(如果不是你从新开始做,这个过程将非常艰辛。)北方医话后面的彩蛋。

·将你的模型作为应用到公告,.例如除用从Docker容器提供预测的REST API。当你的应用Docker化了以后,就是可以通过不需要快速地随意图片文件夹。

晋阶阅读什么到这里我们也只只学了Docker的一点皮毛,前面还有很多东西真心掌握。我很参与Docker领域,我其实数据科学家会经常会遇到了它,我希望这篇文章能让你有相当的信心结束使用它。下面这些资源曾在我的Docker之旅中为我提供过帮助:

·有用Docker命令:_docker_containers/

·更用处的Docker命令:

·Dockerfile建议参考:

·该如何创建战队和推带到DockerHub上的库:

彩蛋:Nvidia-Docker我自学Docker最早的原因是要在单个GPU上做深度学习模型的原型开发,接着在我需要更多计算资源时再迁走到AWS上。我当时也在学习Jeremy Howard的出色的课程(),另外希望与其他人分享分享我的原型设计。

不过,要将英伟达GPU的驱动程序等所有依赖包都中有以来,你不能可以使用Docker,反而要用Nvidia-Docker()。这比建议使用vanillaDocker要多花一些功夫,但如果能你表述了Docker,做下来就很简单啊。

我将我的Nvidia-Docker设置放到这里:_Tutorial/tree/master/gpu_tvtorial,你是可以用这个来参与练习。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。