Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';Docker和Python virtualenv之间的区别是什么?_Python_Docker_Virtualenv - Fatal编程技术网

什么';Docker和Python virtualenv之间的区别是什么?

什么';Docker和Python virtualenv之间的区别是什么?,python,docker,virtualenv,Python,Docker,Virtualenv,据我对Docker的了解,它是一种用于虚拟环境的工具。用他们的行话来说,这就是所谓的“集装箱化”。这或多或少就是Python的virtualenv所做的。但是,您可以在Docker中使用virtualenv。那么,它是虚拟环境中的虚拟环境吗?我不知道这是如何工作的,所以有人能澄清一下吗?Python虚拟环境将只“容器化”Python运行时,即Python解释器和Python库,而Docker隔离整个系统(整个文件系统、所有用户空间库、网络接口)。因此,Docker更接近于虚拟机而不是虚拟环境。V

据我对Docker的了解,它是一种用于虚拟环境的工具。用他们的行话来说,这就是所谓的“集装箱化”。这或多或少就是Python的virtualenv所做的。但是,您可以在Docker中使用virtualenv。那么,它是虚拟环境中的虚拟环境吗?我不知道这是如何工作的,所以有人能澄清一下吗?

Python虚拟环境将只“容器化”Python运行时,即Python解释器和Python库,而Docker隔离整个系统(整个文件系统、所有用户空间库、网络接口)。因此,Docker更接近于虚拟机而不是虚拟环境。

VirtualEnvironment只封装Python依赖项。Docker容器封装了整个操作系统

使用pythonvirtualenv,您可以轻松地在Python版本和依赖项之间切换,但您只能使用主机操作系统

有了Docker镜像,你可以替换整个操作系统,在Ubuntu、Debian、Alpine甚至Windows Server Core上安装和运行Python


有Docker,你能想到的各种操作系统和Python版本的组合,随时可以在任何安装了Docker的系统上使用。

除此之外,还有Docker和venv的组合:一些安装了Python的操作系统提供了“OS-near”应用程序,例如,据我所知,在debian上安装了apt(及其衍生产品)。python venv使开发人员能够发布需要不同解释器版本的python应用程序,而不会影响操作系统python附带的版本。现在,由于Docker如上所述“隔离整个操作系统”,这同样适用于Docker映像。因此,在我看来,如果需要/需要Docker映像,最好创建一个venv插件ide是python应用程序的Docker映像。

一个虚拟环境,一个包含特定版本python的python安装的自包含目录树,以及一些附加包


docker容器提供了更高级别的抽象/隔离,它可以有自己的“进程空间、文件系统、网络空间、ipc空间等”

这是一个好问题,但可能会因为离题而闭嘴。virtualenv不是一个真正的隔离,它是一个穷人的隔离,使用路径黑客和符号链接-你仍然在自己的操作系统中。Docker提供了更多的隔离,但没有完整的虚拟机那么多。你可以将容器看作是两者之间的中间地带一个virtualbox(重,贵)和一个virtualenv(轻,便宜)。在容器中创建virtualenv没有多大意义,因为docker已经提供了隔离,这样做没有多大意义。这可能会降低响应时间(两级虚拟化)?Python虚拟环境更改了Python环境—它不会虚拟化Python解释器的执行。Docker容器不会虚拟化,除非它是通过虚拟机监控程序(Docker机器)执行的.我仍然认为在操作系统中安装docker会很乏味,我通常会这样做,我用shell语言编写pytohn外部项目的所有依赖项,并自动执行它们,比如说在通过sshIs的生产中,在docker容器中创建虚拟环境有什么好处该容器将只提供一个flask web应用程序。此外,还有来自Google的“几种流行编程语言”(包括Python),它们“只包含编程语言运行时”——来自