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文件。
使用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/
````
-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文件。