文章目录
本文主要讲解如何打包本地conda环境并生成镜像和压缩包。如需要配置Docker环境(本文所有docker指令都是使用用户组的用户)具体请看:
Docker 封装anaconda环境,生成镜像并打包,纯小白一文读懂(一).
提示:以下是本篇文章正文内容,下面案例可供参考
打包环境前需要对镜像及容器有所了解,这将使你对后续docker指令的理解有所帮助。
Docker镜像文件,也就是image文件,它可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成对应的 Docker 容器。
简单理解就是,将程序打包在image文件(也叫image仓库)里面,运行image文件,生成一个容器生例,其类似于一个隔离箱,不与宿主机环境做交互。只在容器里面跑程序(已将mysql之类的依赖都打包在里面了,不用去配置数据库等环境),安装了Docker的服务器叫做宿主机,在容器内的代码不会受到宿主机环境的影响。
也就是说,别人的程序打包在image里面,自己直接拿过来后不用配置环境,直接生成容器就可以直接在容器里跑。
查看服务器中的所有Docker镜像:
# 列出本机的所有 image 文件:
docker images

查看服务器中的Docker容器:
# 列出本机的所有 docker容器:
docker ps -a
# 列出本机的运行中的 docker容器:
docker ps

continuumio/anaconda3 镜像是docker镜像库中star数最高的镜像
docker pull continuumio/anaconda3
用 docker images 指令 查看是否拉取成功。
docker run --name test -idt continuumio/anaconda3
-idt中的 -d 指定容器的运行模式,可以使docker 的服务是在后台运行。但加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)。
执行完该指令后再查看一下容器列表(docker ps -a),发现有名为test的新容器被创建,容器一被创建就自动运行。

docker exec -it test /bin/bash
用exec进入容器,在使用快捷键退出容器时,不会停止容器。
●在test容器内查看容器内的anaconda的位置
whereis anaconda
#或者使用
conda info --envs
查看完后接着退出容器:
#快捷键
Ctrl+d

图中可以看出在容器内部,conda的路径是/opt/conda 。
●退出容器后,在本地环境中将需要打包的本地复制到docker中:
docker cp /home/b/miniconda3/envs/yolo1.7 test:/opt/conda/envs
其中 : /home/b/miniconda3/envs/yolo1.7 是自己需要打包的本地环境, test是容器名,/opt/conda是在容器内使用 conda info --envs 查看到的根目录。
●接着再进入容器 查看环境是否复制成功(然后再退出容器):

●退出容器后,在本地环境中将需要打包的代码复制到docker中:
docker cp /home/b/.../tools test:/root/
将本地文件 /home/b/…/tools 复制到test容器的根目录下。
●容器内查看复制结果并退出容器:

到此为止,该test容器中已经包含我们所需的代码和环境,可以对其进行打包。
●退出容器后,执行:
docker commit -a 'author' -m 'instruction' test image_test
该命令各字段: test :容器名字 image_test:保存的镜像的名字。
●查看镜像 ,可以看到已经生成了名为image_test的新镜像:

●cd到一个指定目录,以便于查找保存的压缩包。
●压缩:
docker save -o test_tar.tar image_test
test_tar.tar: 压缩包名称 , image_test: 镜像名称。
●在该目录下,可以查看到生成的名为test_tar.tar的压缩包:

到此为止,本地的conda环境便打包完成。
在宿主机上执行:
●将打包好的镜像压缩包拷贝到宿主机上。
●cd 到压缩包目录,执行:
docker load -i test_tar.tar
查看是否读取成功,可发现已经生成了一个名为image_test 的新镜像:

●用image_test镜像创建一个名为create_test的容器:
docker run --name creat_test -idt image_test
PS:若创建容器时需要对容器内文件与容器外文件做映射,则需要执行以下指令:
docker run --name creat_test -v /home/b/hxb:/root/hxb -idt image_test
-v /home/b/hxb:/root/hxb:该指令可以在创建容器时将 容器外的/home/b/hxb目录映射到容器内的/root/hxb目录。这样可以在容器内直接访问容器外的/home/b/hxb文件夹。
●进入容器内便可发现已经将环境与代码全部打包过来了:

●启动容器:
docker start 'CONTAINER ID'
●停止容器:
docker stop 'CONTAINER ID'
●删除容器(由于容器即使停止也会占用存储空间,所以有必要删除没用的容器来释放空间):
docker rm 'CONTAINER ID'
●删除镜像(需先删除关联的容器):
docker rmi 'IMAGE ID'
●干净卸载docker:
rm -rf /etc/systemd/system/docker.service.d
13
rm -rf /var/lib/docker
rm -rf /var/run/docker
rm -rf /var/run/docker.pid
Docker菜鸟教程
docker封装本地anaconda环境
将本地的anaconda环境封装到docker中并导出为压缩包
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
有这些railscast。http://railscasts.com/episodes/218-making-generators-in-rails-3有了这个,你就会知道如何创建样式表和脚手架生成器。http://railscasts.com/episodes/216-generators-in-rails-3通过这个,您可以了解如何添加一些文件来修改脚手架View。我想把两者结合起来。我想创建一个生成器,它也可以创建脚手架View。有点像RyanBates漂亮的生成器或web_app_themegem(https://github.com/pilu/web-app-theme)。我
导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri
之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里