使用Docker清洁环境

cleanenv的Python项目详细描述


clean environment是python的virtualenv的逻辑继承者。

它使用docker创建一个完全封装的工作环境。

这种用法对用户来说非常简单和完全透明。您甚至不会注意到您正在环境中工作。所有程序都可以从站点启动,就好像它们是普通程序一样。它们会自动包装并在Docker容器中启动。




为什么不直接使用Docker或Virtualenv
=====================================================================================================================您还绑定了该特定操作系统。在某些情况下,您不允许安装和运行自己的特权服务(如数据库)或使用另一个软件版本。


Docker-尽管有些人称之为Virtualenv Killer-缺乏作为Virtualenv替代品的可用性。您将始终需要一些手工制作的
脚本来使其美观。

主机的一部分。程序、用户和路径的映射是透明的。您可以使用
它作为virtualenv的替换项。

,它并不严格绑定到python。希望透明地执行隔离的所有内容都可以与cleanenv一起使用。假设您需要运行较新或
较旧版本的ruby,但无法升级/降级主机系统版本。
cleanenv为您创建一个快捷二进制文件,允许您使用
映射的用户和路径独立运行它。






简单的"create"命令在指定的路径中创建环境。
若要输入环境类型:


$source<;path>;/bin/activate


若要停用但不销毁环境类型:

$deactivate

如果要使它们保持运行,请在创建时使用--persistent指令。

启动后,<;program>;参数将在容器中执行。

$cleannev create--on activate<;program>;--on deactivate<;program2>;<;path>;

(抱歉,尚未实现)

您应该使用--persistent指令。这样即使程序退出,容器也能保持运行。


因为Docker容器与主机系统完全隔离,因此容器中不存在主机系统的所有现有用户。cleanenv
自动在docker容器中创建一个与调用cleanenv的用户匹配的用户。您可以使用--user指令覆盖此设置:

$cleanenv create--user[<;id>;:]<;name>;<;path>;

$cleanenv create--user system:[<;id>;:]<;name>;<;path>;

使用--program指令可以实现从主机轻松调用它们的程序映射


$cleanenv create--link<;full path in container>;


要覆盖这些设置,可以提供如下映射:


$cleanenv create--directory<;host path>;:<;container path>;[:rw]

如果不存在":rw",则主机路径将以只读方式装载。使用:rw(完全访问读写)挂载时要小心。由于Docker中缺少安全功能,您可以更改/删除主机系统中的文件。




您需要一个可复制的配置
您可以将上述所有设置放入.cleanenv.conf文件中。
在执行"cleanenv create<;path>;"时,它会在当前工作目录中搜索此文件。或者,您可以提供一个配置文件,其中包含
`--config`




重置环境的状态


容器。



对环境的正确销毁
==







$<;path>;/bin/destroy




抱歉)
====



快照用于存储Docker容器的当前状态,以便回滚和前滚更改。


设置程序以在执行时自动创建快照。

$cleannev snapshot configure pip--pattern‘install’--name‘pip-{id}

list available快照:

$cleanev snapshot list


创建快照:


$cleanev snapshot create[<;name>;]


还原快照:

$cleanev snapshot<;id name>;

要还原初始启动-创建cleanev后-请使用:

$cleanev reset

执行此操作时请小心,因为下次创建快照时可能会丢失所有快照。

键入:

$cleanev freeze

它创建一个带有快照历史的docker映像,并防止所有即将发生的
更改。

$cleanev unfreeze

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
通过GWT JSNI传递Java对象时发生javascript错误   java Spring启动项目wildfly服务器失败   java如何进行会话来存储Id?   javajpa/hibernate如何通过带注释的外键映射元素集合   Java将字节[]转换为双[],反之亦然   eclipse显示Java双值   java如何正确读取socket数据包   是否存在用于集合处理的Java库?   javacom。太阳jna。无法将指针强制转换为com。太阳jna。站台win32。温迪夫。LPARAM   java Eclipse插件开发。我可以在插件中使用已经存在的jar文件吗?   分析Java错误:找不到符号变量   java如何使按钮摆动以进行大的处理   如何通过传递bucket name和file name从java中的minio服务器下载多个文件   JavaScrollPane JavaFX使其滚动更多?   java无法加载C:\Users\username\AppData\Local\Android\Sdk\buildtools\28.0.3\lib\dx。罐子   JavaSwing中是否有一个“组框”等价物?   java使用slf4j和log4j与单独使用log4j相比,是否存在性能开销?   java模式和匹配:格式化文本文件   JTable行增长的java问题