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

打印 上一主题 下一主题

主题 1016|帖子 1016|积分 3048

Docker环境



  • windows11
  • Docker下载所在:https://docs.docker.com/desktop/install/windows-install/
创建虚拟环境

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

安装完成之后,便可以直接创建虚拟环境了,使用命令virtualenv env1进行创建
  1. C:\Users\china>virtualenv env1
  2. Using base prefix 'c:\\program files\\python36'
  3. New python executable in C:\Users\china\env1\Scripts\python.exe
  4. Installing setuptools, pip, wheel...done.
复制代码
其中activate.bat文件,表现激活虚拟环境。进入到Scripts目次,在该目次下输入activate.bat命令,即可激活Python虚拟环境.

退出虚拟环境
在当前目次下输入命令deactivate.bat即可

pycharm使用虚拟环境

1、打开Pycharm,然后依次点击左上方的file->Settings
2、之后依次Project->roject Interpreter,使用虚拟环境的python解释器,下载需要的包,环境进行隔离。


预备打包

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

2.将项目依赖库进行导出,使用pip freeze > requirements.txt命令
我们在虚拟环境中下载好代码需要的包之后,将依赖库进行导出,会生成requirements.txt文件,里面生存的是包环境
假如python的版本和包的版本存在冲突,可以将requirements.txt中包的版本去掉,这样就会自动下载对应的包

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

4.app中的内容实在就是Python项目根目次以及子目次文件,直接将新建的hello.py放到app目次下
5.编写Dockerfile,创建一个文件叫Dockerfile,内容如下:
最好是先实验pip install -r requirements.txt -i https://pypi.douban.com/simple/命令,确认无误,再编写Dockerfile文件
  1. #基于的基础镜像
  2. FROM python:3.7.9
  3. #代码添加当前目录所有内容到code文件夹
  4. ADD . /code
  5. # 设置code文件夹是工作目录
  6. WORKDIR /code
  7. # 安装支持
  8. RUN pip install -r requirements.txt -i https://pypi.douban.com/simple/
  9. CMD ["python", "./app/predict/select_data_combine.py"]
复制代码
6.实验docker build -t hello-test .这里注意,hello-test后面有一个点,这里的hello-test是镜像的名称,随意命名

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

生存为镜像文件

  1. docker save ubuntu>ubuntu.tar
复制代码
生存Ubuntu为ubuntu.tar文件
拆分文件、归并文件

如何文件较大传输耗时,可以切割文件,分词传输,再归并文件即可。
  1. split -b 500m log.txt newfile #切分文件log.txt,按照500MB进行切分
  2. cat newfile* > orifile #合格文件为整个
复制代码
加载镜像文件

  1. docker load -i redis5014.tar
复制代码
解压镜像文件,检察镜像
  1. docker images
复制代码
找到对应的镜像,实验镜像
  1. docker run -it 镜像ID
复制代码
启动容器

先检察容器是否开启
  1. docker ps
复制代码
假如发现未开启,显示所有容器
  1. docker ps
  2. -a
复制代码
开启指定的容器
  1. docker start 容器ID
复制代码
开启容器失败,按照如下操纵:
  1. docker exec -it 6198ef53d943 bash
  2. Error response from daemon: Container 6198ef53d9431a3f38e8b38d7869940f7fb803afac4a2d599812b8e42419c574 is not running
  3. docker commit 6198ef53d943
  4. sha256:ace7ca65e6e3fdb678d9cdfb33a7a165c510e65c3bc28fecb960ac993c37ef33
  5. docker run -it ace7ca65e6e bash
  6. root@72d38a8c787d:/#
复制代码
进入容器

  1. sudo docker exec -it 容器ID bash
复制代码
退出容器

  1. exit
复制代码
复制物理路径到容器指定路径

将当地文件复制到docker容器中
  1. docker cp 本地文件路径 容器ID/容器NAME:容器内路径
复制代码
  1. docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez 1faca6a70742:/opt/rabbitmq/plugins
复制代码
或者
  1. docker cp /Users/wuhanxue/Downloads/rabbitmq_delayed_message_exchange-3.9.0.ez rabbit:/opt/rabbitmq/plugins
复制代码
完整语句
  1. sudo docker run -it -v /home/ubuntu/anti/docker_test:/code 2286df316633 /bin/bash
复制代码
删除镜像、容器

删除镜像

直接删除镜像
  1. docker rmi 镜像ID
复制代码
强制删除镜像
  1. docker rmi -f image_id
复制代码
删除容器

删除容器
  1. docker rm 容器ID
复制代码
假如删除不掉,先关闭容器,再删除
  1. docker stop 容器ID
复制代码
强制删除容器
  1. 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
  • https://blog.csdn.net/u014282578/article/details/127866389

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

本帖子中包含更多资源

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

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

知者何南

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表