docker运行python文件

项目完成后需要打包成镜像然后发布,因为镜像里包含了配置文件及所需要的包。制作镜像的三种办法:

目录

一、如果项目较小,且所需依赖不是很多,直接将项目文件上传至容器内,并安装所有程序运行需要的包。最后保存镜像。

二、在基础镜像上安装所有程序运行需要的包,最后保存镜像。(项目代码不需要放进镜像)

1、加载保存好的本地镜像 或 拉取镜像:

2、从宿主机进入要执行的脚本(test.py)所在目录:

3、在宿主机执行python文件(运行容器)

3.1 如果启动的是服务程序,需要指定端口映射,端口映射通过-P和-p参数来实现。

4、结果

5、这种方式会产生容器变化

三、编写dockerfile等


一、如果项目较小,且所需依赖不是很多,直接将项目文件上传至容器内,并安装所有程序运行需要的包。最后保存镜像。

1、怎样将本地文件上传到docker容器

运行镜像,打开新的命令行,查看container ID,docker ps -a

查找容器长ID

docker inspect -f '{{.ID}}' tomcat-container-id

拷贝本地文件到容器
docker cp 本地路径 容器长ID:容器路径

docker cp /usr/myfile/Test.war 38ef22f922704b32cf2650407e16b146bf61c221e6b8ef679989486d6ad9e856:/usr/local/tomcat/webapps/Test.war

注意:

1、docker run -it 一个启动容器,然后另起一个窗口连接服务器查看容器ID、查找长ID,进行复制。复制后在第一个窗口目录下  或者  利用sudo docker attach [CONTAINER ID] 进入该容器,查看是否复制成功。(这样做目的是为了保持容器STATUS为UP)

2、每次docker run -it 其实都是新建了一个容器(相应的容器ID都不一样)


二、在基础镜像上安装所有程序运行需要的包,最后保存镜像。(项目代码不需要放进镜像)

进入项目代码目录下,以挂载的方式执行python代码

1、加载保存好的本地镜像 或 拉取镜像:

docker load -i comments_classification.tar

docker pull python:3.5 # [REPOSITORY:TAG]

2、从宿主机进入要执行的脚本(test.py)所在目录:

python文件地址:/home/bx_admin/jenkins_work/test/test.py

#test.py文件
#!/usr/bin/python
import os
print(os.getcwd())  #获取当前目录
print('-------------start--------------------')
print('this is a test file')
print('----------------end---------------')

3、在宿主机执行python文件(运行容器)

docker run -v /home/bx_admin/jenkins_work/test:/usr/src/python -w /usr/src/python python:3.5 python test.py

命令说明:

  • docker run 创建容器
  • -v /home/bx_admin/jenkins_work/test 将主机中/home/bx_admin/jenkins_work/test目录挂载到容器的/usr/src/python
  • -w /usr/src/python 指定容器的/usr/src/python目录为工作目录
  • python:3.5 是镜像
  • python test.py 是命令执行test.py脚本

3.1 如果启动的是服务程序,需要指定端口映射,端口映射通过-P和-p参数来实现。

3.1.1 -p指定要映射的端口,一个指定端口上只可以绑定一个容器;支持的格式如下:

IP:HOSTPORT:CONTAINERPORT:指定ip、指定宿主机port、指定容器port

  • 适用于映射到指定地址的指定端口
    eg:将容器的5000端口映射到指定地址127.0.0.1的5000端口上:
docker run -p 127.0.0.1:5000:5000 -v /home/bx_admin/jenkins_work/test:/usr/src/python -w /usr/src/python python:3.5 python test.py

图片来自网络

IP::CONTAINERPORT:指定ip、未指定宿主机port(随机)、指定容器port

  • 适用于映射到指定地址的任意端口
    eg:将容器的4000端口映射到127.0.0.1的任意端口上:
docker run -it -d -p 127.0.0.1::4000 docker.io/centos:latest /bin/bash

 注:会将容器的ip127.0.0.1和4000端口,随机映射到宿主机的一个端口上。

HOSTPORT:CONTAINERPORT :未指定ip、指定宿主机port、指定容器port

  • 适用于将容器指定端口指定映射到宿主机的一个端口上(映射所有接口地址)
    eg:将容器的80端口映射到宿主机的8000端口上:
docker run -itd -p 8000:80 docker.io/centos:latest /bin/bash


注:上边的操作默认会绑定本地所有接口上的所有地址。

查看映射端口配置:

docker port CONTAINER_ID

本节参考:https://www.cnblogs.com/wholj/p/10551999.html

4、结果

执行test.py文件后,可以看到当前目录是/usr/src/python,可以看出我们的脚本输出的是docker容器中的目录,而不是我们宿主机的目录 。

在这里插入图片描述

再看直接使用服务器python直接该文件的打印,当前目录是home/bx_admin/jenkins_work

在这里插入图片描述

5、这种方式会产生容器变化

 先看执行前的容器 docker ps -a ,当前一共只有两个容器
在这里插入图片描述
docker执行python文件后(相当于新建了一个容器)
在这里插入图片描述
注意:即使文件执行失败了,但是新容器还是新生成了
在这里插入图片描述
删除容器:docker rm -v a7505a43e238

参考:CentOS 7上使用docker运行python脚本文件 https://blog.csdn.net/shuyaoyao/article/details/108692158


三、编写dockerfile等

python项目打包成docker镜像并发布 https://blog.csdn.net/bocai_xiaodaidai/article/details/92838984

python项目打包成docker镜像并发布运行 https://blog.csdn.net/qq_27786919/article/details/106780756?utm_medium=distribute.pc_relevant.none-task-blog-title-1&spm=1001.2101.3001.4242

Docker制作Python运行环境基础镜像的方法步骤 https://www.jb51.net/article/177259.htm

python 项目制作docker镜像 https://www.cnblogs.com/adolfmc/p/13062478.html

  • 5
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值