Introduction
xbot.plugins.docker provides Docker support for xbot.framework.
Installation
Install via pip:
pip install xbot.plugins.docker
Get Started
import os
import shutil
from xbot.plugins.docker.docker import DockerConnection
host = '192.168.8.8'
container_conn = DockerConnection()
container_conn.connect(
host,
container='existing-container',
user='root',
)
container_conn.exec('echo hello', expect=0)
container_conn.disconnect()
image_conn = DockerConnection()
image_conn.connect(
host,
image='alpine:latest',
runargs={'command': 'sleep infinity'},
user='root',
)
image_conn.exec('echo hello', expect=0)
image_conn.exec('/bin/sh -c "exit 2"', expect=2)
image_conn.exec('echo hello', expect='hello')
image_conn.exec('/bin/sh -c "exit 7"', expect=None)
result = image_conn.exec('echo "jack 20"; echo "tom 30"')
assert str(result) == 'jack 20\ntom 30'
assert result.rc == 0
assert result.getfield('tom', 2) == '30'
assert result.getcol(2) == ['20', '30']
with image_conn.cd('/tmp'):
assert image_conn.exec('pwd') == '/tmp'
local_home = os.environ.get('HOME') or os.environ['HOMEPATH']
local_put_dir = os.path.join(local_home, 'docker-put-dir')
local_get_dir = os.path.join(local_home, 'docker-get-dir')
remote_dir = '/tmp/docker-put-get-dir'
shutil.rmtree(local_put_dir, ignore_errors=True)
shutil.rmtree(local_get_dir, ignore_errors=True)
os.makedirs(os.path.join(local_put_dir, 'tree', 'nested'))
os.makedirs(local_get_dir)
with open(
os.path.join(local_put_dir, 'file'),
'w',
encoding='utf-8',
) as local_file:
local_file.write('xbot\n')
image_conn.makedirs(remote_dir)
image_conn.putfile(
os.path.join(local_put_dir, 'file'),
remote_dir,
)
image_conn.putfile(
os.path.join(local_put_dir, 'file'),
remote_dir,
filename='renamed',
)
image_conn.putdir(
os.path.join(local_put_dir, 'tree'),
remote_dir,
)
image_conn.getfile(
image_conn.join(remote_dir, 'file'),
local_get_dir,
)
image_conn.getfile(
image_conn.join(remote_dir, 'file'),
local_get_dir,
filename='renamed',
)
image_conn.getdir(
image_conn.join(remote_dir, 'tree'),
local_get_dir,
)
image_conn.disconnect()
Demo
Here is a demo project showing how to use xbot.plugins.docker in a test project.
简介
xbot.plugins.docker 是为 xbot.framework 提供 Docker 支持的插件。
安装
使用 pip 安装:
pip install xbot.plugins.docker
入门
import os
import shutil
from xbot.plugins.docker.docker import DockerConnection
host = '192.168.8.8'
container_conn = DockerConnection()
container_conn.connect(
host,
container='existing-container',
user='root',
)
container_conn.exec('echo hello', expect=0)
container_conn.disconnect()
image_conn = DockerConnection()
image_conn.connect(
host,
image='alpine:latest',
runargs={'command': 'sleep infinity'},
user='root',
)
image_conn.exec('echo hello', expect=0)
image_conn.exec('/bin/sh -c "exit 2"', expect=2)
image_conn.exec('echo hello', expect='hello')
image_conn.exec('/bin/sh -c "exit 7"', expect=None)
result = image_conn.exec('echo "jack 20"; echo "tom 30"')
assert str(result) == 'jack 20\ntom 30'
assert result.rc == 0
assert result.getfield('tom', 2) == '30'
assert result.getcol(2) == ['20', '30']
with image_conn.cd('/tmp'):
assert image_conn.exec('pwd') == '/tmp'
local_home = os.environ.get('HOME') or os.environ['HOMEPATH']
local_put_dir = os.path.join(local_home, 'docker-put-dir')
local_get_dir = os.path.join(local_home, 'docker-get-dir')
remote_dir = '/tmp/docker-put-get-dir'
shutil.rmtree(local_put_dir, ignore_errors=True)
shutil.rmtree(local_get_dir, ignore_errors=True)
os.makedirs(os.path.join(local_put_dir, 'tree', 'nested'))
os.makedirs(local_get_dir)
with open(
os.path.join(local_put_dir, 'file'),
'w',
encoding='utf-8',
) as local_file:
local_file.write('xbot\n')
image_conn.makedirs(remote_dir)
image_conn.putfile(
os.path.join(local_put_dir, 'file'),
remote_dir,
)
image_conn.putfile(
os.path.join(local_put_dir, 'file'),
remote_dir,
filename='renamed',
)
image_conn.putdir(
os.path.join(local_put_dir, 'tree'),
remote_dir,
)
image_conn.getfile(
image_conn.join(remote_dir, 'file'),
local_get_dir,
)
image_conn.getfile(
image_conn.join(remote_dir, 'file'),
local_get_dir,
filename='renamed',
)
image_conn.getdir(
image_conn.join(remote_dir, 'tree'),
local_get_dir,
)
image_conn.disconnect()
示例项目
展示如何在测试项目中使用 xbot.plugins.docker 的示例:demo。
Metadata
Release files for xbot.plugins.docker 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xbot_plugins_docker-1.0.0.tar.gz | 18.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xbot_plugins_docker-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.0 kB
Release files / xbot_plugins_docker-1.0.0.tar.gz
| Download URL | xbot_plugins_docker-1.0.0.tar.gz |
|---|---|
| Size | 18.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5220cea20feb15ec17ae942648b790b0174b6e216a5d7074ee236f4b9f29dcd6
|
|
BLAKE2b-256 checksum How to use checksums |
f31649a63e09638d2b9023868b39296b79e840cda38f5f817f160f823e308892
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.20
|
Release files / xbot_plugins_docker-1.0.0-py3-none-any.whl
| Download URL | xbot_plugins_docker-1.0.0-py3-none-any.whl |
|---|---|
| Size | 18.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6e90af854bf013d59aff530552799b6293f4e4a4580c26ac8aa610a6ec1ea3ec
|
|
BLAKE2b-256 checksum How to use checksums |
29fbc16d4af6390c733807aa3534dd613d750b2294a62a02b0d526438afdc133
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.10.20
|