开发者

将本地Python项目打包成docker镜像上传到服务器并在docker中运行

目录
  • docker环境
  • 创建虚拟环境
  • 退出虚拟环境
  • pycharm使用虚拟环境
  • 准备打包
  • 保存为镜像文件
  • 拆分文件、合并文件
  • 加载镜像文件
  • 启动容器
  • 进入容器
  • 退出容器
  • 复制物理路径到容器指定路径
  • 删除镜像、容器
    • 删除镜像
    • 删除容器
  • 参考文献
    • 总结

      Docker环境

      • Windows11
      • Docker下载地址:https://docs.docker.com/desktop/install/windows-install/

      创建虚拟环境

      虚拟环境可以搭建独立的python运行环境,使得单个项目的运行环境与其他项目互不影响。

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      安装完成之后,便可以直接创建虚拟环境了,使用命令virtualenv env1进行创建

      C:\Users\china>virtualenvpython env1
      Using base prefix 'c:\\program files\\python36'
      New python executable in C:\Users\china\env1\Scripts\python.exe
      Installing setuptools, pip, wheel...done.
      

      其中activate.BAT文件,表示激活虚拟环境。进入到Scripts目录,在该目录下输入activate.bat命令,即可激活Python虚拟环境.

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      退出虚拟环境

      在当前目录下输入命令deactivate.bat即可

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      pycharm使用虚拟环境

      1、打开Pycharm,然后依次点击左上方的file->Settings

      2、之后依次Project->Project Interpreter,使用虚拟环境的python解释器,下载需要的包,环境进行隔离。

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      准备打包

      1.创建好虚拟环境后,在项目中创建一个hello.py,内容简单写一些

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      2.将项目依赖库进行导出,使用pip freeze > requirements.txt命令

      我们在虚拟环境中下载好代码需要的包之后,将依赖库进行导出,会生成requirements.txt文件,里面保存的是包环境

      如果python的版本和包的版本存在冲突,可以将requirements.txt中包的版本去掉,这样就会自动下载对应的包

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      3.在桌面上新建一个文件夹,文件夹内容如下

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      4.app中的内容其实就是Python项目根目录以及子目录文件,直接将新建的hello.py放到app目录下

      5.编写Dockerfile,创建一个文件叫Dockerfile,内容如下:

      最好是先执行pip install -r requirements.txt -i https://pypi.douban.com/simple/命令,确认无误,再编写Dockerfile文件

      #php基于的基础镜像
      FROM python:3.7.9
      #代码添加当前目录所有内容到code文件夹
      ADD . /code
      # 设置code文件夹是工作目录
      WORKDIR /code
      # 安装支持
      RUN pip install -r requirements.txt -i https://pypi.douban.com/simple/
      CMD ["python", "./app/predict/select_data_combine.py"]
      

      6.执行docker build -t hello-test .这里注意,hello-test后面有一个点,这里的hello-test是镜像的名称,随意命名

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      7.执行docker run -it hello-test,可以看到输入了请求百度返回的html信息和我在hello.py文件中打印的Hello Docker~

      将本地Python项目打包成docker镜像上传到服务器并在docker中运行

      保存为镜像文件

      docker save Ubuntu>ubuntu.tar

      保存Ubuntu为ubuntu.tar文件

      拆分文件、合并文件

      如何文件较大传输耗时,可以切割文件,分词传输,再合并文件即可。

      split -b编程客栈 500m log.txt newfile #切分文件log.txt,按照500MB进行切分
      cat newfile* > orifile #合格文件为整个
      

      加载镜像文件

      docker load -i Redis5014.tar
      

      解压镜像文件,查看镜像

      docker images

      找到对应的镜像,执行镜像

      docker run -it 镜像ID

      启动容器

      先查看容器是否开启

      docker ps

      如果发现未开启,显示所有容器

      docker ps -a

      开启指定的容器

      docker start 容器ID

      开启容器失败,按照如下操作:

      docker exec -it 6198ef53d943 bash
      Error response from daemon: Container 6198ef53d9431a3f38e8b38d7869940f7fb803afac4a2d599812b8e42419c574 is not running
      
      docker commit 6198ef53d943
      sha256:ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33
      
      docker run -it ace7ca65e6e bash
      root@72d38a8c787d:/#
      

      进入容器

      sudo docker exec -it 容器ID bash

      退出容器

      exit

      复制物理路径到容器指定路径

      将本地文件复制到docker容器中

      docker cp 本地文android件路径 容器ID/容器NAME:容器内路径
      docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez 1faca6a70742:/opt/rabbitmq/plugins
      

      或者

      docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez rabbit:/opt/rabbitmq/plugins
      

      完整语句

      sudo docker run -it -v /home/ubuntu/anti/docker_test:/code 2286df316633 /bin/bash
      

      删除镜像、容器

      删除镜像

      直接删除镜像

      docker rmi 镜像ID
      

      强制删除镜像

      docker rmi -f image_id

      删除容器

      删除容器

      docker rm 容器ID
      

      如果删除不掉,先关闭容器,再删除

      docker stop 容器ID
      

      强制删除容器

      docker rm -f container_id
      

      优雅地删除镜像的最佳做法是:先停止容器,再删除容器,最后删除镜像。

      优雅地删除容器的最佳做法是:先停止容器,再删除容器。

      参考文献

      • https://www.cnblogs.com/xiao-apple36/p/12810941.html
      • https://blog.csdn.net/songlh1234/article/details/110400673
      • https://stackoverflow.com/questions/29599632/container-is-not-running
      • htphptps://blog.csdn.net/u014282578/article/details/127866389

      总结

      到此这篇关于将本地Python项目打包成docker镜像上传到服务器并在docker中运行的文章就介绍到这了,更多相关Python打包成docker镜像上传服务器内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

      0

      上一篇:

      下一篇:

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      最新开发

      开发排行榜