Docker 打包Python项目详细教程(Windows)

打印 上一主题 下一主题

主题 377|帖子 377|积分 1131

一、Docker的安装

参考教程

Windows安装使用Docker,方便你的开发和摆设(DockerDesktop篇)_windows安装docker-CSDN博客
https://blog.csdn.net/qq_60750453/article/details/128636298
可以使用以下下令,验证docker是否安装成功

1. 输入docker version,出现客户端和服务器的信息

2. 输入docker run hello-world,并在Docker Desktop验证hello-world镜像是否拉取成功



二、创建镜像(使用Dockerfile本地创建镜像)

(1)本地创建一个Python项目(新建假造情况,避免等会要打包的库太多了),编写一个简朴的爬虫代码demo.py(网址url随意切换),目次结构如下


(2)在当前目次终端,使用pip freeze > requirements.txt下令将项目依赖库进行导出。下令执行完成后会生成一个叫requirements.txt的文件


(3)编写Dockerfile(无类型文件),可以直接点击vscode新建文件按钮(不要加任何文件类型)


 

(4)打开cmd终端,进入Python项目目次,运行docker build -t demo:v1 .  下令构建镜像,这里留意后面有一个 . (如果出现报错,记得检查网络情况,另一种可能是Dockerfile文件受损,可以重新生成再试试)。在Docker Desktop中可以查察到我们创建的镜像。

docker build -t Name:TagName .(如果不加标签,默认标签为latest)

  • -t参数指定构建成后,镜像的仓库、标签等,
  • Name 给镜像取的名字
  • TagName 给镜像取的标签
  • 末了的 . 表示 Dockerfile 文件在当前目次下



三、创建并启动容器(在容器中运行镜像)

(1)创建容器并运行镜像有很多差别的方式,下令详细用法如下:

  1. docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
复制代码
OPTIONS阐明(常用):有些是一个减号,有些是两个减号
--name=“容器新名字” 为容器指定一个名称;
-d: 配景运行容器并返回容器ID,也即启动保卫式容器(配景运行);
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等候交互);
(2)我们如今有一个已经创建好的demo镜像,我们执行docker run -d --name=container1 demo下令,容器会在配景运行并返回容器ID。留意这里没加标签默认是latest,如果你之前创建镜像的时间使用了其他标签,需要加上 :[标签],要否则体系会找不到镜像。


(3)如果你想以交互的模式启动一个容器,可以执行docker run -it --name=container2 demo /bin/bash下令,我们希望有个交互式 Shell(雷同于Linux),因此用的是 /bin/bash下令。我们成功进入到在Dockerfile中指定的工作目次的终端,输入exit可以退出直接退出容器终端。


(4)输入docker ps -a下令可以查察我们刚创建的两个容器,也可以在Docker Desktop中查察到我们创建的容器





四、修改镜像文件内容(在Docker Desktop上操纵)

(1)下面是我们刚刚创建的容器,点击右边的执行按钮,我们就会在容器中运行镜像,点击他的名字,可以进入到详细页面



(2)在容器的文件体系中,我们可以在code文件夹下找到我们的demo.py代码


(3)右键点击编辑按钮 ,可以修改我们的demo.py文件



(4)修改后,CTRL+S保存


(5)点击运行容器按钮,执行demo.py文件,成功输出新的内容,修改成功



五、从容器内拷贝文件到主机上

(1)docker cp 容器ID:容器内路径 目标主机路径,留意容器内的路径要加上指定的工作路径(Dockerfile文件中指定的),这里1.txt文件在code文件夹下。



六、镜像文件的打包和导入

(1)使用镜像打包下令:docker save ID >  [path].tar 。[path]指定存放的路径(自己主机上)。打包完成可以在D盘下看到多了一个tar包,这就是你装好情况的docker镜像。


(2)把这个镜像的tar包发送给别人,其他人使用docker load -i save_demo.tar下令导入你的镜像,输出镜像的ID,此时还看不到容器。运行这个镜像,才进入对应的容器,然后就可以在相应目次下运行你的代码了。

 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表