python库使用docker容器的伪tty

dockerpt的Python项目详细描述


#docker pty

使用python客户端提供操作分配给
docker容器的伪tty(pty)所需的功能。

[![构建状态](https://travis-ci.org/d11wtq/dockerpy.svg?branch=master)]
(https://travis ci.org/d11wtq/docker py)


假设您已经安装了它。

=client.create_container(
image='busybox:latest',
stdin_open=true,
tty=true,
command='/bin/sh',



dockerptiy.start(client,container)
`````

控制是屈服于容器的PTY直到容器的出口,或者容器的PTY被关闭。
BR/>这是一个安全的操作,所有的资源都恢复到原来的
状态。
BR/> & GT;**注意:** DokKpTy确实支持连接到非TTY容器来流
容器输出,如果不分配伪tty,显然不可能“控制”容器。


如果按“c-p c-q”,容器的pty将关闭,但容器将继续运行。换句话说,您将从容器中分离出来,并可以使用另一个“dockerpy.start()”调用重新连接。


要运行它们:

```
-bash$pip install-r requirements-dev.txt
-bash$behave features/
````

测试使用busybox
容器作为测试夹具,因此不会太重。

步骤定义在features/steps/

也有代码部分的单元测试,这些部分不是天生依赖于控制tty。要运行这些代码:

```
-bash$pip install-r requirements-dev.txt
-bash$py.test tests/
````

pr需要在我合并之前通过这个构建。

-travis ci build:https://travis ci.org/d11wtq/dockerpy

在终端中,stdin、stdout和stderr三个文件描述符都连接到控制终端(tty)。当你把“tty=true”标志传递给Docker的“create_container()”时,Docker会在容器stdin所在的容器(pty)内分配一个假tty,stdout和stderr都已连接。


Docker API提供了一种访问连接到PTY的三个套接字的方法。
如果可以访问主机系统的TTY文件描述符和容器的PTY文件描述符,则只需在主机和容器之间“管道”将数据写入这些文件的描述符就可以了。这样做使得用户的
终端有效地成为容器内部的伪终端。
BR/>在实际中比这更复杂一些,因为必须小心到
将主机终端放进RAW模式(其中键入,如Enter不是BR/>具有任何特殊含义的解释),并在退出时恢复它。此外,必须使
容器的stdout和stderr流以及'sys.stdin'不阻塞,以便它们可以与's一起使用elect()`不阻塞主进程。这些属性在退出时恢复。
>BR/>不能通过发送数据到STDIN来控制终端的大小,并且只能由终端程序本身控制。由于伪终端
在真实终端内运行,因此pty的大小必须保持与呈现tty的大小相同。因此,docker提供了一个api
调用来调整分配的pty的大小。sigwinch处理程序用于检测窗口
大小更改,并根据需要调整伪终端的大小。


\contributors

-primary author:[chris corbyn](https://github.com/d11wtq)
-collaborator:[daniel nefin](https://github.com/dnephin)
-contributor:[stephen moore](https://github.com/delfick)
-撰稿人:[Ben Firshman](https://github.com/bfirsh)


\copyright&;licensing

copyright&;copy;2014克里斯•科尔宾。有关详细信息,请参见license.txt文件。

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

推荐PyPI第三方库


热门话题
pojo如何使用普通Java动态生成JavaBean类?   JAVAutil。并发无法取消可运行Java   如何从独立java应用程序连接到weblogic server的数据库连接池   带Drools Expert的java Robocode机器人   java Hibernate:在两个属性中生成相同的值   java Gwt如何从响应中获取信息   使JAVA MD5哈希与C#MD5哈希匹配   java Spring MVC 4@RequestParam DTO强制属性   保留jpg Exif信息的java Resize图像文件   java gwtcharts库未打印图形   使用Restlet ClientResource的java无法将实体发送到Restlet服务   基于迁移数据的java集成测试spring服务层