Docker容器python环境与python虚拟环境

Docker容器python环境与python虚拟环境,python,docker,containers,virtual,environment,Python,Docker,Containers,Virtual,Environment,我主要用python编程,并且对虚拟环境有一些经验。我是新的软件,并开始寻找docker来运行我的代码。我想了解它的功能和工作原理 根据我的理解,docker容器就像虚拟环境,在执行时运行一组指令,可以将其中包含的所有内容视为单个实体(这样它或其他内容就不会彼此有条件了?)。当我读到更多关于容器的内容时,它们听起来非常完美,可以消除对虚拟环境的任何需求,但仍然不确定。如果您能对此进行澄清,我将不胜感激,因为我还无法在网上找到任何内容。我更愿意将容器视为操作系统之上的操作系统。你可以用谷歌搜索关于

我主要用python编程,并且对虚拟环境有一些经验。我是新的软件,并开始寻找docker来运行我的代码。我想了解它的功能和工作原理


根据我的理解,docker容器就像虚拟环境,在执行时运行一组指令,可以将其中包含的所有内容视为单个实体(这样它或其他内容就不会彼此有条件了?)。当我读到更多关于容器的内容时,它们听起来非常完美,可以消除对虚拟环境的任何需求,但仍然不确定。如果您能对此进行澄清,我将不胜感激,因为我还无法在网上找到任何内容。

我更愿意将容器视为操作系统之上的操作系统。你可以用谷歌搜索关于docker的很多信息,但是如果用简单的语言来说,docker是一个薄层,它运行在你的操作系统之上,使用你的操作系统的资源(不像VM),并运行它自己的封闭环境。

python虚拟环境的主要目的是为每个项目隔离环境,这意味着每个项目都可以有自己的依赖项,而不管其他项目有什么依赖项

但是对于docker,您可以将每个docker映像视为一个独立的环境,您不需要在Dockerfile中创建或维护虚拟环境,因为Dockerfile应该基于特定版本的python,并且应该运行单个项目

简而言之,如果你有3个项目需要

  • 项目A需要Python 3.6
  • 项目B需要Python 3.7
  • 项目C需要Python 3.8
所有这些都需要为每个项目选择基本图像

  • 来自python:3.6的项目A
  • 项目B
    来自python:3.7
  • 来自python:3.8的项目C

这两种方法都不能取代另一种。这取决于你在做什么

Python虚拟环境是一种将所有应用程序依赖项封装在单个环境(实际上是一个目录)中的方法。这些依赖项是支持您正在使用的操作系统版本的其他应用程序和软件包

Docker容器是一种通过共享大量操作系统文件以低资源消耗运行虚拟机的方法(更多详细信息,请参阅Docker文档)

所以

如果您需要创建一个开发环境;建议使用docker,因为您可以将所有开发人员的确切开发体验加倍。一切都将在一个有自己的操作系统版本和自己的文件(虚拟)的虚拟机中。Python virtual Environment不会100%帮助其他开发人员,除非他们使用与您相同的操作系统版本,并且他们可以复制您部署应用程序的确切步骤

但是,如果您正在创建一个将部署远程服务器的包(比方说使用ansible),docker将是一个额外的不需要的步骤。Python环境将很好地完成这项工作,没有任何问题


此外,包含许多python虚拟环境的Docker非常常见;每个服务有一个环境。因此,即使是docker图像也可以包含python venv查看他们的101系列,这非常好。此外,如果你想更深入地理解,请注意这一点,这是否回答了你的问题?Docker的隔离环境还将主机的本地文件系统与容器的文件系统分开;对于许多典型应用来说,这是一个问题。如果您正在积极开发,这种隔离还意味着容器有一个独立于IDE的文件系统,这会给您带来不便。是docker更重,我应该尽可能选择python虚拟环境吗?