代码之家  ›  专栏  ›  技术社区  ›  danielschnoll

Docker和Python Virtualenv有什么区别?

  •  27
  • danielschnoll  · 技术社区  · 6 年前

    据我对Docker的了解,它是一个用于虚拟环境的工具。用他们的话说,这就是所谓的“集装箱化”。这或多或少是python的virtualenv所做的。但是,您可以使用virtualenv 在里面 码头工人。那么,它是虚拟环境中的虚拟环境吗?我搞不清这是怎么回事,有人能澄清一下吗?

    3 回复  |  直到 6 年前
        1
  •  39
  •   sp0gg    6 年前

    virtualenv只封装python依赖项。Docker容器封装 整个操作系统 .

    有了python virtualenv,您可以轻松地在python版本和依赖项之间切换,但您仍然无法使用主机操作系统。

    使用DOCKER映像,您可以在Obuntu、Debian、Alpun甚至Windows Server内核上交换整个OS安装和运行Python。

    有码头工人 images 在那里,你可以想到各种操作系统和python版本的组合,随时可以下拉并在任何安装了docker的系统上使用。

        2
  •  13
  •   jil    6 年前

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

        3
  •  4
  •   Blindfreddy    6 年前

    添加到上面:有一个组合坞和VeV的案例:一些安装了Python的OSS船来提供“OS近”的应用程序,例如,据我所知,APDE Debian(及其衍生工具)。Python VeV使开发人员可以使用Python应用程序,它需要不同的解释器版本,而不影响OS Python的传输。现在,由于DOCKER隔离了整个OS,如上所述,同样适用于码头工人图像。因此,在我看来,如果需要/需要docker映像,最好在您的python应用程序的docker映像中创建一个venv。