为啥要配置虚拟环境?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥要配置虚拟环境?相关的知识,希望对你有一定的参考价值。

参考技术A 为什么要配置虚拟环境?
虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响.
安装虚拟环境命令:
sudo pip install virtualenv
sudo pip install virtualenvwrapper
安装虚拟环境后,没有mkvirtualenv命令,我们需要配置环境变量:
1. 我们创建一个目录存放虚拟环境 mkdir HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
3. 运行:
source ~/.bashrc
创建虚拟环境命令
如果不指定版本默认安装的是pyhton2的虚拟环境,
python2创建虚拟环境:
mkvirtualenv 虚拟环境名称
mkvirtualenv py2_flask
python3创建虚拟环境:
mkvirtualenv -p python3 虚拟环境名称
mkvirtualenv -p python3 py3_django
使用虚拟环境
查看虚拟环境
workon 两次tab键
选择虚拟环境
workon 虚拟环境名字
workon py3_django
退出虚拟环境
deactivate
删除虚拟环境
rmvirtualenv 虚拟环境名字
rmvirtualenv py2_flask
(先退出虚拟环境,在删除)
在虚拟环境中安装包
pip install 包的名字
pip install flask==0.10.1

项目为啥用docker?

参考技术A


回答之前,先反问一个问题:为什么不用Docker呢?


Docker出现之前,有现在还在用的VMWare虚拟机,有Ghost,部分解决了服务器安装配置的琐碎工作,但是没有解决运行环境的问题。比如常见的环境不一致的问题:开发环境能运行,测试生产环境有bug?还有就是每次新服务器、新环境搭建时无穷无尽的问题。


那么Docker出现后,整个环境被打包起来,也就是将所有安装配置代码化自动化了,结合资源编排和云服务,可以秒启一个集群化的web服务系统,如果没有容器技术是做不到的。Docker是使用最普遍的容器技术,事实上的容器技术标准。


推荐看一个Docker秒启Web服务的视频:https://www.ixigua.com/i6799872807397229068/

我可以举几个例子,就可理解为什么要用docker?

用传统的方式上线一个WEB项目,我们的一般做法是在线上服务器中,安装WEB服务器,然后装好数据库,装好其他需要的软件最后把本地己打包好的代码上传至服务器,然后重启就好了。

如果一台服务器上要部署多个项目,每个项目之间无论是在资源的使用,还是之间的冲突。都会让人崩溃。更别提有不同的开发语言和开发团队。

现在我们有docker ,可以用docker把应用直接打包封装到一个容器中。容器之间有着进程之间的隔离,在容器中操作不会影响到其他容器的使用。

以前开发一套应用,必须开发机上安装环境,测试机上安装环境,然后部署的服务器上安装环境,而且由于使用的机器不是同样的操作系统,所以有时会出现在本机上没问题,测试时有出问题,甚至开发测试都没问题,一上线就BUG满满。估计大家遇到过与测试之间撕B的场景。

用上docker,无论是在开发机,测试机,生产环境以容器运行,使应用在三种环境下保持一致。

对比虚拟机,docker占用资源更小。而且可以提高服务器的资源利用率。

Docker可以将复杂的应用程序运行环境部署打包,这样就避免开发人员或者运维人员反复部署相同的应用程序运行环境。在如今云计算盛行的情况下,分布式应用和管理变得简单了。基本上云计算服务平台都提供了现成的群集计算服务,这些群集服务无一例外都是基于docker镜像构建的。群集应用的要求就是每个节点的应用程序版本以及环境要一致,一个docker镜像就是一个虚拟主机,只要放到容器中即可实现单机独立运行的效果,大大简化了分布式群集应用的实现过程

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

云计算、大数据,移动技术的快速发展,加之企业业务需求的不断变化,导致企业架构要随时更改以适合业务需求,跟上技术更新的步伐。毫无疑问,这些重担都将压在企业开发人员身上;团队之间如何高效协调,快速交付产品,快速部署应用,以及满足企业业务需求,是开发人员亟需解决的问题。Docker技术恰好可以帮助开发人员解决这些问题。

为了解决开发人员和运维人员之间的协作关系,加快应用交付速度,越来越多的企业引入了DevOps这一概念。但是,传统的开发过程中,开发、测试、运维是三个独立运作的团队,团队之间沟通不畅,开发运维之间冲突时有发生,导致协作效率低下,产品交付延迟, 影响了企业的业务运行。Docker技术将应用以集装箱的方式打包交付,使应用在不同的团队中共享,通过镜像的方式应用可以部署于任何环境中。这样避免了各团队之间的协作问题的出现,成为企业实现DevOps目标的重要工具。以容器方式交付的Docker技术支持不断地开发迭代,大大提升了产品开发和交付速度。

此外,与通过Hypervisor把底层设备虚拟化的虚拟机不同,Docker直接移植于Linux内核之上,通过运行Linux进程将底层设备虚拟隔离,这样系统性能的损耗也要比虚拟机低的多,几乎可以忽略。同时,Docker应用容器的启停非常高效,可以支持大规模的分布系统的水平扩展,真正给企业开发带来福音。

Docker很大程度上解决了上述问题,提高开发和运维的工作效率,提高企业的工作效率。

任何一项新技术的出现,都需要一个发展过程,比如云计算为企业所接受用了将近五年左右时间,OpenStack技术也经历了两、三年才受到人们的认可。因此,虽然Docker技术发展很快,但技术还不够成熟,对存储的灵活的支持、网络的开销和兼容性方面还存在限制,这是Docker没有被企业大范围使用的一个主要原因。另外一个原因是企业文化是否与DevOps运动一致,只有企业支持DevOps,才能更大地发挥Docker的价值。最后一个原因就是安全性问题,Docker对于Linux这一层的安全的隔离还有待改进,才能进一步得到企业的认可。

当服务器运行多个应用程序时,为了防止应用程序之间所需的环境依赖产生冲突或误操作影响,所以需要做好隔离,最大限度利用服务器资源环境,docker就把它变成了一个个沙盒。沙盒与沙盒之间互不影响

这是一个容器,为了防止一个项目的程序运行异常影响其他项目程序的正常运行,可以理解为隔离不同项目的程序,简单来说类似于一个虚拟的盒子或系统,里面运行独立的项目程序,共享系统底层资源。

docker跟项目有什么关系,运维玩就行了

以上是关于为啥要配置虚拟环境?的主要内容,如果未能解决你的问题,请参考以下文章

已经安装过jdk,为啥打开eclipse时,还显示没有Java虚拟机

eclipse 出错,环境变量配置好了,有的时候可以用,有的时候就会报如下错误为啥

为啥我的python虚拟环境使用pip安装模块,必须使用sudo

如何采用conda配置python虚拟环境

环境虚拟机安装与配置

python框架之虚拟环境的配置