zoukankan      html  css  js  c++  java
  • Docker与virtualenv

    docker环境统一,组件隔离

    关于Docker与virtualenv,其本质是一样的,virtualenv虚拟python运行环境,保证系统python环境的整洁,docker也是一样,只是它虚拟的是系统运行环境。docker的用途更广,因为它虚拟的是操作系统。

    一、简介

    1、关于Docker,它是由go语言编写的一个基于Linux容器的容器引擎。让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。

    其优点:

    (1)、性能卓越。

    (2)、可以执行带来了工作效率的提升。

     

    2、关于virtualenv,我们先看一个例子:在Python项目中,以Django为例,我们系统的版本是1.10.1的版本,但是实际项目中需要的版本为1.8.x。也就是说不同项目之间使用不同版本的某些包,但是由于某些原因,却不能全部都升级到最新版本。所有包如果都用同一个目录的话,很容易出现各种因更新而造成的冲突,这时候就需要对环境进行隔离,使用虚拟环境让全局的site-packages目录干净与便于管理。

    二、Docker安装

    1、安装Docker

    在其官方网站上各类细节写得很详细。我们可以打开菜单第一栏的"Install"根据当前使用的系统下载对应版本。如果是Linux系统,对应的apt-get或者yum。

    对于MAX OS X 按照官方文档进行,然后点击“Docker Quickstart Terminal”就会进入Docker shell。它会进行一系列初始化,最后提示:docker is configured to use ******  machine with 192.168.99.100。

            这里的192.168.99.100就是Docker创建虚拟机的IP,可以通过命令:docker -machine ip 查看。

    如果:docker--version没有报错,那么就表明安装成功了。

    2、下载镜像:

    这里有一个基于Ubuntu:16.04LTS的镜像:docker pull dongweiming/web_develop:dev

    3、进入容器

    命令:docker run --name web_dev -it -p 9000:9000 -p 3141:3141 -p 5000:5000 dongweiming/web_develop /bin/zsh

    关于命令中:

    --name:制定了容器的名字为web_Dev,如果不指定,将随机取一个名字

    -p:显式地暴露特定端口

    /bin/zsh::是登陆容器的默认shell

    4、启动、退出

    启动:docker start web_dev

    退出:docker attach web_dev  (需要回车2次)

     

    三、virtualenv

    1、安装:

    pip install virtualenv 

    2、创建虚拟环境(以创建Django项目为例):

    virtualenv django

    3、激活环境:

    Windows下:切换到scripts下,输入activate

    Linux下:进入django目录,然后输入:source ./bin/activate

    这有一篇文章大家可以参考一下,有图:

    http://blog.csdn.net/topkipa/article/details/52511048

    4、退出

    退出命令:deactivate

    5、其他

    (1)virtualenv默认只是生成一个非常标准的Python环境,而在实际运用中,项目往往会有第三方包的依赖,会出现多个项目依赖相同包的情况,因此,我们可以一个定制的virtualenv脚本解决该问题。

    (2)virtualenvwrapper—virtualenv的功能扩展:用来管理全部虚拟环境,方便创建删除和拷贝虚拟环境。可以使用Tab补全虚拟环境,支持用户粒度的钩子支持。

  • 相关阅读:
    [linux]Linux下的log
    [WDT]内部看门狗和外部看门狗
    [misc]printf/fprintf/sprintf/snprintf函数
    [Linux]read/write和fread/fwrite有什么区别
    移动端图片操作(二)——预览、旋转、合成
    移动端图片操作(一)——上传
    实现tap的多种方式
    Hammer.js分析(四)——recognizer.js
    Hammer.js分析(三)——input.js
    Hammer.js分析(二)——manager.js
  • 原文地址:https://www.cnblogs.com/fengff/p/8981702.html
Copyright © 2011-2022 走看看