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

清风挽醉 2024-07-26 13:07:02 阅读 78

一、Docker的安装

参考教程

Windows安装使用Docker,方便你的开发和部署(DockerDesktop篇)_windows安装docker-CSDN博客

icon-default.png?t=N7T8

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)创建容器并运行镜像有很多不同的方式,命令具体用法如下:

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,此时还看不到容器。运行这个镜像,才进入对应的容器,然后就可以在相应目录下运行你的代码了。

 



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。