天道酬勤,学无止境

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

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 将参数传递给在 docker 容器中运行的 python 脚本(Pass argument to python script running in a docker container)
    问题 假设以下设置: 用php/laravel编写的网站用户上传文件(文本/文档/pdf) 我们有一个 docker 容器,其中包含一个用于将文本转换为 numpy 数组的 python 脚本。 我想把这个上传的数据传递给 python 脚本。 我找不到任何解释如何将动态生成的输入传递到容器的内容。 这可以通过从包含上传的文件作为 dockerfile 的 ENTRYPOINT 中指定的变量的 laravel 应用程序内部执行 shell 脚本来完成吗? 有没有其他方法可以做到这一点? 回答1 我强烈建议将 tcp/ip 用于此类目的。 顺便说一下,在这种情况下,您将受益于: 可以检测你的python服务是否在线您可以将python容器移动到另一台机器 实现真的很简单。 您可以选择任何框架,但对我来说合适的是Twisted ,并按如下方式实现您的 python 脚本: from twisted.internet.protocol import Factory, Protocol from twisted.protocols.basic import LineReceiver class DataProcessor(LineReceiver): def lineReceived(self, line): # line contains your data pass Factory
  • 创建你的第一个Docker应用
    Grace 译 分布式实验室 在简要介绍Docker是什么以及为什么要使用它之后,你将能够使用Docker创建第一个应用程序。Docker是什么?Docker是由Docker公司开发的免费软件。它于2013年3月13日面世,并且从那天开始成为IT开发领域的必备工具。它允许用户创建独立且隔离的环境来启动和部署其应用程序。这些环境称为容器。使用Docker,开发人员可以在任何机器上运行容器。正如你所看到的,使用Docker,不再存在依赖或编译问题。你所要做的就是启动容器,你的应用程序就会立即启动。但是,Docker等同于虚拟机吗?这是关于Docker的最常见问题之一。答案是:并不完全是。它可能起初看起来像虚拟机,但功能却不太一样。与Docker不同,虚拟机包含完整的操作系统。虚拟机能独立并像计算机一样工作。Docker仅仅是共享主机的资源,利用这些资源来运行它所需的环境。Docker VS虚拟机(版权归Docker博客所有)为什么作为开发人员需要使用Docker?这个工具可以真正改变开发人员的日常生活。为了最好地回答这个问题,我列出了一份它的好处的清单:Docker很快。与虚拟机不同,你的应用程序可以在几秒钟内启动并快速停止。Docker是跨平台的。你可以在任何系统上启动容器。相比于虚拟机,可以更快的构建和销毁容器。设置工作环境不再困难。配置Docker后
  • Docker安装部署python项目极简实战(macOS)
    前言 docker问世多年,上手尝试,发现这的确是个好东西啊。应用简单明了、同一系统中部署多个docker环境分离互不干扰(python不同版本应用放到不同的docker),迁移方便。 本文从docker安装、python镜像、应用部署、镜像上传等方面,用最简洁的路径记录一个完整应用过程,算是做个笔记吧,毕竟命令容易忘。 docker入门视频教程,简单明了 https://www.bilibili.com/video/BV18J411n79W?from=search&seid=17411736726571505141 docker命令行大全,忘了就查查 https://www.runoob.com/docker/docker-command-manual.html 1、Docker安装 (1)docker下载地址 https://hub.docker.com/editions/community/docker-ce-desktop-mac/ 直接下载、双击、拖动安装。实在不明白,下边有安装和配置教程。 (2)详细安装教程 https://www.runoob.com/docker/macos-docker-install.html 2、python3.7.4镜像 (1)双击docker启动应用(小鲸鱼图标) (2)拉取python镜像(这里默认外网,速度慢,详细教程有加速方法)
  • 在docker中运行cron python作业(Running cron python jobs within docker)
    问题 我想以分离模式在Docker容器中运行python cron作业。 我的设置如下: 我的python脚本是test.py #!/usr/bin/env python import datetime print "Cron job has run at %s" %datetime.datetime.now() 我的cron文件是my-crontab * * * * * /test.py > /dev/console 而我的Dockerfile是 FROM ubuntu:latest RUN apt-get update && apt-get install -y software-properties-common python-software-properties && apt-get update RUN apt-get install -y python cron ADD my-crontab / ADD test.py / RUN chmod a+x test.py RUN crontab /my-crontab ENTRYPOINT cron -f 这种方法潜在的问题是什么? 还有其他方法,它们的优缺点是什么? 回答1 我在尝试使cron作业在docker容器中运行时遇到的几个问题是: docker容器中的时间不是UTC的本地时间; docker环境未传递给cron
  • 如何在 docker 上运行我的 python 脚本?(How to run my python script on docker?)
    问题 我正在尝试在 docker 上运行我的 python 脚本。 我尝试了不同的方法来做到这一点,但无法在 docker 上运行它。 我的python脚本如下: import os print ('hello') 我已经在我的 mac 上安装了 docker。 但我想知道如何制作图像,然后将其推送到 docker,之后我想在 docker 上拉取并运行我的脚本。 回答1 好的,首先为您的 docker 镜像创建一个特定的项目目录。 例如: mkdir /home/pi/Desktop/teasr/capturing 将您的 dockerfile 和脚本复制到那里,并将当前上下文更改为此目录。 cp /home/pi/Desktop/teasr/capturing.py /home/pi/Desktop/teasr/dockerfile /home/pi/Desktop/teasr/capturing/ cd /home/pi/Desktop/teasr/capturing 这是最佳实践,因为 docker-engine 在构建时所做的第一件事就是读取整个当前上下文。 接下来,我们将查看您的 dockerfile。 它现在应该是这样的: FROM python:latest WORKDIR /usr/local/bin COPY capturing.py . CMD [
  • docker制作python项目镜像
    docker制作python项目镜像 本文内容:讲述如何将自己开发的一个python项目,打包成docker镜像。 制作docker镜像主要有两种方法: 1、先用docker pull 命令拉取一个基础镜像,然后通过docker commit 命令在此镜像基础上制作新镜像。 2、通过dockerfile制作 第一种方法: 准备工作:已安装docker的linux系统。docker安装请参考:Ubuntu 16.04安装Docker 1、拉取基础镜像: (1)用docker search 命令先查找有哪些镜像: (2)用docker pull 拉取其中一个: 然后就可以用docker images命令查看到这个拉取的镜像了。 2、运行该基础镜像: docker run -idt 镜像名:tag号 用docker ps 查看镜像运行状态: 可以看到该镜像已经运行起来了,名字叫”lucid_lalande“。容器ID是d2cc36fbcb1a。 3、进入该镜像运行起来的容器环境: docker exec -it 容器ID /bin/bash 可以看到已经以交互式方式进入了容器中。 4、在容器内部进行相关修改 创建一个文件夹,用来存放python项目代码 5、退出容器终端,将宿主机文件拷贝到刚刚新建的容器目录中 退出容器终端: 将宿主机文件拷贝到容器中: docker cp
  • Python爬虫一:利用docker搭建Python开发环境
    利用docker搭建Python开发环境 一:环境准备二:开启docker的远程连接三:pycharm中配置docker环境3.1 pycharm调用出docker工具栏3.2 连接远程主机上的docker3.3 配置python解释器3.4 配置代码自动上传与运行3.5 配置Dockerfile3.6 配置docker-compose 四:Docker搭建python爬虫环境4.1 配置python容器环境4.2 docker-selenium4.3 appium-docker-android 一:环境准备 IP地址操作系统安装软件172.17.2.82windowsPyCharm Pro172.17.2.118ubuntu16.04Docker PyCharm Pro安装在windows电脑上 PyCharm远程调用局域网内一台ubutun16.04系统上的docker python运行python代码 pycharm调用docker的原理如下: 二:开启docker的远程连接 docker在ubuntu系统上的安装见:安装docker Ubuntu16.04下修改: # 在下ExecStart行中增加:-H tcp://0.0.0.0:2375 vim /lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd
  • docker入门
    在学一门新知识的时候,超哥喜欢提问,why?what?how?wiki资料 什么是dockerDocker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。 Docker 使用 Google 公司推出的 Go 语言 进行开发实现。 docker是linux容器的一种封装,提供简单易用的容器使用接口。它是最流行的Linux容器解决方案。 docker的接口相当简单,用户可以方便的创建、销毁容器。 docker将应用程序与程序的依赖,打包在一个文件里面。运行这个文件就会生成一个虚拟容器。 程序运行在虚拟容器里,如同在真实物理机上运行一样,有了docker,就不用担心环境问题了。ocke用场景web应用的自动化打包和发布 自动化测试和持续集成、发布 在服务型环境中部署和调整数据库或其他应用为什么要用docker?我们先看看很久很久以前,服务器是怎么部署应用的! 由于物理机的诸多问题,后来出现了虚拟机但是虚拟化也是有局限性的,每一个虚拟机都是一个完整的操作系统,要分配系统资源,虚拟机多道一定程度时,操作系统本身资源也就消耗殆尽,或者说必须扩容docker与虚拟机的区别 docker VS 传统虚拟机
  • Docker学习笔记(五)—— Windows下构建Dockerfile镜像创建Python运行环境
    目的 在windows系统下通过Dockerfile构建一个镜像,实现python程序运行功能。 编写Dockerfile文件 创建Dockerfile文件、py文件、requirements.txt文件放到同一目录下: 编写Dockerfile # 基于python镜像 FROM python # 作者信息 MAINTAINER yucen <https://blog.csdn.net/qq_14997473> # 工作目录 WORKDIR /code # 拷贝py文件和requirements.txt文件 ADD . /code # 也可使用以下两句实现 #COPY test.py /code/ #COPY requirements.txt /code/ # 更新pip RUN pip install --upgrade pip --index-url https://pypi.douban.com/simple # pip安装依赖包 RUN pip install -r requirements.txt # 执行python文件 CMD ["python","test.py"] 构建镜像 首先cd到Dockerfile所在目录 cd C:\Users\User\Desktop\new 执行docker bulid命令 docker build -t yucen_py:v1
  • 部署Python应用到Docker
    序言: 需要运行的Python项目的结构: 只要直接运行run_app.py文件即可启动应用; web就是Python项目的web(整个源码所在目录)直接复制过来的,部署到docker里面,在容器中启动: 一个web文件夹:包含工程的代码,和运行工程所需的环境列表requirements.txt 一个docker镜像构建的Dockerfile 一、确保Docker应用的安装 可以参考菜鸟教程 二、生成环境列表requirements.txt cmd命令,进入 /web 目录,也就是工程目录,package的同级目录, 执行命令:pip freeze > requirements.txt 就在该目录下生成了一个requirements.txt文件,可能很大,因为没有配合virtualenv ,就把整个环境中的包都列出来,我们可以删除我们此工程中,不需要的组件 三、编写Dockerfile Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了 Dockerfile,就可以创建我们所需要的镜像,当启动容器时候,执行run_app.py程序。 #基于的基础镜像 FROM openjdk:8-jre-slim FROM python:3.7 MAINTAINER Fisher
  • docker 打包本地文件_将本地Python项目打包成docker映像并在docker中运行,镜像
    想了解更多好玩的人工智能应用,请关注公众号“机器AI学习 数据AI挖掘”,”智能应用"菜单中包括:颜值检测、植物花卉识别、文字识别、人脸美妆等有趣的智能应用。。 本文中缩减了如何搭建docker环境,如何将本地文件上传到服务器或从服务器中下载等,这里不是重点,如果哪个环节报错或遇到问题可自行百度。本文重点讲一下大致过程~ 1、本地创建一个Python项目,项目中创建一个hello.py,内容简单写一些 2、将项目依赖库进行导出,使用pip freeze > requirements.txt命令 执行完成后会生成一个叫requirements的TXT文件 3、在桌面上新建一个文件夹,文件夹内容如下: 4、app中的内容其实就是Python项目根目录以及子目录文件,咱们为了省事,直接将新建的hello.py放到app目录下 5、编写dockerfile,创建一个文件叫Dockerfile,内容如下: #基于的基础镜像FROM python:3.8.2#代码添加到code文件夹ADD . /code# 设置code文件夹是工作目录WORKDIR /code# 安装支持RUN pip install -r requirements.txtCMD ["python", "/app/hello.py"] 6、docker环境提前准备好,这里不进行演示,可以找一些文档教程参考 7
  • 发生错误时如何将文件复制到 docker 容器:Nosuch 容器?(How can I copy files to a docker container when error happened:Nosuch container?)
    问题 我是 docker 新手,所以,如果我有任何错误的想法,请指出。谢谢~ 我的目标是在 docker 中运行由我或我所属的团队开发的 Web 服务器。 于是,我想到了三个步骤: 有一个图像,将 web 文件复制到其中,然后运行容器。所以,我执行以下步骤: 1-获取泊坞窗图像。 我是这样尝试的: docker pull centos ,这样我就可以得到一个基于docker pull centos的图像。这里,我不关心centos的版本,当然,它的版本是6.7或,只是标记为:最新。 在这里,我通过docker images检查docker images ,我可以看到它是这样的: REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/centos latest d123f4e55e12 3 weeks ago 196.6 MB 所以,我认为这一步成功了。 2- 尝试将本地系统中的文件复制到容器中。 我停在路径:/tornado,它有一个名为 fordocker 的文件夹。 fordocker 包含网络服务器文件。 我尝试这样的共同点(基于指南): docker cp fordocker/ d123f4e55e12:/web 但! 错误来了: Error response from daemon: No such container
  • 在docker中分离运行时,Python应用程序不显示任何内容(Python app does not print anything when running detached in docker)
    问题 我有一个在我的dockerfile中启动的Python(2.7)应用程序: CMD ["python","main.py"] main.py在启动时会打印一些字符串,然后进入循环: print "App started" while True: time.sleep(1) 只要我使用-it标志启动容器,一切都会按预期进行: $ docker run --name=myapp -it myappimage > App started 我稍后可以通过日志看到相同的输出: $ docker logs myapp > App started 如果我尝试使用-d标志运行相同的容器,则该容器似乎正常启动,但看不到任何输出: $ docker run --name=myapp -d myappimage > b82db1120fee5f92c80000f30f6bdc84e068bafa32738ab7adb47e641b19b4d1 $ docker logs myapp $ (empty) 但是容器似乎仍在运行; $ docker ps Container Status ... myapp up 4 minutes ... 附件也不显示任何内容: $ docker attach --sig-proxy=false myapp (working, no output)
  • Docker教程-Linux版 docker常见指令、dockerfile文件写法、安装nvidia-docker
    错误修复写在前,怕忘了 2020-10-21 03:35:28.323894: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1 2020-10-21 03:35:28.398097: F tensorflow/python/lib/core/bfloat16.cc:705] Check failed: PyBfloat16_Type.tp_base != nullptr 到时再改吧,目前线本地跑跑看 更改docker 储存的地方 (<,>)这个部分先不用看,部署完docker,等用到的时候就会来看了,直接从 1.安装命令开始吧!!! 如果自己的磁盘被顶掉了,可能是添加的docker路径引起的,只要删掉就好了 独立的问题 : ubuntu 修改docker镜像位置: 1.cd /etc/systemd/system/multi-user.target.wants 2.sudo gedit docker.service 3.ExecStart=/usr/bin/dockerd --graph=/media/astonmatin/datasets/docker -H fd:// --containerd
  • CentOS7基于docker部署django
    CentOS7基于docker部署django 简介环境介绍Docker安装配置centos镜像进行配置DjangoSSH镜像制作Django镜像制作 Nginx镜像制作MySQL镜像制作容器的启动配置数据库容器启动Django启动Nginx启动 简介 docker部署Django比传统部署会更灵活一点,如果没有了解过docker的朋友,在中间有些命令不懂的可以先百度 环境介绍 CentOS7.4 基础服务器版本 Docker Django 此为docker镜像 Nginx 此为docker镜像 MySQL 此为docker镜像 Docker安装配置 下载安装docker yum -y install docker vim 启动docker,并设置开机启动 systemctl start docker systemctl enable docker 下载所需镜像 docker pull centos docker pull nginx docker pull mysql # 如果下载别的版本MySQL加写成,如:mysql:5.6 centos镜像进行配置Django 为方便以后使用这里分为SSH和Django两步来做 SSH镜像制作 新建ssh_image文件夹并进入 mkdir -p create_docker_image/ssh_image cd create_docker
  • 监控Docker卷中的文件更改(Monitoring file changes in Docker volumes)
    问题 我有一个运行python脚本的docker容器:等待输入请求并相应地处理数据。 由于我使用docker进行开发,因此我希望每当更改该python文件的源代码(在我的机器上,而不是在容器中)时,该容器都会停止python脚本并使用新代码重新启动它。 因为现在我必须手动停止容器并重新启动它。 我也可以在我的侧面(而不是在容器内部)监视文件更改,但是我想避免这种情况,而是在容器本身内进行。 我正在使用docker-compose的volumes选项在FS和容器之间共享源代码。 为了监视文件更改,我一直在尝试使用 watchdog python 模块中的 watchmedo shell 实用程序。 我只是有一个奇怪的问题,我无法注意到那个 python 源文件的文件更改,除非我从容器内部而不是在我的本地 FS 中编辑它,即使它们是使用volumes选项安装的。 我感觉这与docker的工作方式有关,也许与卷有关。 我一直在尝试在线阅读它,但运气不佳。 有任何想法吗? 我完全被卡住了! 编辑:这是一个可以更好地解释它的 gif。 窗格的顶部连接到同一容器,底部两个连接到我的本地计算机。 所有窗格都指向同一文件夹。 回答1 您可以让您的容器运行类似这样的内容(需要安装inotify): while true do inotifywait -e create -e modify /path
  • 将文件作为参数传递给 Docker 容器(Passing file as argument to Docker container)
    问题 一个非常简单的python程序,假设当前目录是/PYTHON,我想将file.txt作为参数传递给python脚本boot.py,这是我的Dockerfile FROM python COPY boot.py ./ COPY file.txt ./ RUN pip install numpy CMD ["python", "boot.py", "file.txt"] 然后我使用以下命令构建 Docker 容器: docker build -t boot/latest . 然后运行容器 docker run -t boot:latest python boot.py file.txt 我得到了正确的结果。 但是如果我将另一个文件 file1.txt 复制到当前目录(来自不同的目录(不是 /PYTHON)),那么我再次运行容器: docker run -t boot:latest python boot.py file1.txt 我收到以下错误: FileNotFoundError: [Errno 2] 没有这样的文件或目录:'file1.txt' 所以错误是由于 file1.txt 不在容器中,但是如果我与朋友共享这个容器并且朋友想要传递一个非常不同的文件作为参数,我该如何编写 Dockerfile 以便任何人使用我的容器可以将非常不同的文件作为参数传递而没有错误吗? 提前致谢
  • 在运行时向 docker 镜像添加 pip 要求(Add pip requirements to docker image in runtime)
    问题 我希望能够为自己创建的 docker 映像添加一些额外的要求。 我的策略是使用 CMD 命令从 dockerfile 构建映像,该命令将在运行时使用安装的卷执行“pip install -r”命令。 这是我的 dockerfile: FROM ubuntu:14.04 RUN apt-get update RUN apt-get install -y python-pip python-dev build-essential RUN pip install --upgrade pip WORKDIR /root CMD ["pip install -r /root/sourceCode/requirements.txt"] 有了那个 dockerfile 我构建了图像: sudo docker build -t test . 最后,我尝试使用以下命令附加我的新要求: sudo docker run -v $(pwd)/sourceCode:/root/sourceCode -it test /bin/bash 我的本地文件夹“sourceCode”中有一个有效的 requirements.txt 文件(它只包含一个值为“gunicorn”的行)。 当我收到提示时,我可以看到需求文件在那里,但是如果我执行 pip freeze 命令,则不会列出 gunicorn 包。
  • Docker部署Flask应用(flask+gunicorn+gevent)入门
    Python Web框架 文章目录 Python Web框架Flask应用使用Gunicorn+Gevent运行Flask应用DockerfileDockerDocker容器使用Docker镜像和仓库构建镜像(基于基础镜像) GitLab CI**.gitlab-ci.yml 参数详解** python常用Web框架有Flask,Django等多种框架。 Flask:一个用Python编写的轻量级Web应用框架 Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。 Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。 Flask应用 flask官网文档 创建一个最简单的Flask应用: from flask import Flask app = Flask(__name__) @app.route('/') def hello
  • 在Docker中分发python源代码安全吗?(Is distributing python source code in Docker secure?)
    问题 我将决定该项目的编程语言。 要求是某些客户希望在没有外部Internet访问的情况下在隔离的服务器上运行应用程序。 为此,我需要向他们分发应用程序,并且不能使用在我的云上运行的SaaS方法(例如,我更愿意这样做...)。 问题是,如果我决定使用Python进行此开发,则需要为客户提供易读的代码,而这并不是我真正想要做的(当然,我了解所有“您真的需要做些什么?保护您的源代码”这类问题,但目前已超出范围)。 我的一位同事告诉我有关Docker的信息。 我可以找到许多有关Docker容器安全性的答案。 问题是关于保护(隔离)主机使其免受容器中运行的代码的影响。 我需要知道是否可以保护Docker Image中运行的Docker映像中的Python源代码不受访问-用户是否可以某种方式(无需简单)访问该Python代码? 我知道我无法保护所有内容,我知道可以对所有内容进行反编译/破解。 我只是想知道答案,只是为了决定在Docker内部访问我的代码的方式是否足够困难以至于我可以冒险。 回答1 Docker映像是一种开放的,有文档证明的“应用程序打包”格式。 检查图像内容的方法有无数种,包括其中随附的所有python源代码。 在容器内部运行应用程序可提供与逃避容器访问主机的应用程序的隔离。 它们不能保护您免受主机上检查容器内部发生情况的用户的侵害。 回答2 Python程序作为源代码分发。