低级API¶
主要的面向对象的API构建在 APIClient
。上的每种方法 APIClient
与睡觉应用编程接口终结点一对一映射,并返回应用编程接口用来响应的响应。
可以使用 APIClient
直接去吧。一些基本的事情(例如,运行一个容器)由几个API调用组成,使用低级API会很复杂,但如果您需要额外的灵活性和功能,它会很有用。
- class APIClient(base_url=None, version=None, timeout=60, tls=False, user_agent='docker-sdk-python/7.0.0', num_pools=None, credstore_env=None, use_ssh_client=False, max_pool_size=10)¶
Docker Engine API的底层客户端。
示例
>>> import docker >>> client = docker.APIClient(base_url='unix://var/run/docker.sock') >>> client.version() {u'ApiVersion': u'1.33', u'Arch': u'amd64', u'BuildTime': u'2017-11-19T18:46:37.000000000+00:00', u'GitCommit': u'f4ffd2511c', u'GoVersion': u'go1.9.2', u'KernelVersion': u'4.14.3-1-ARCH', u'MinAPIVersion': u'1.12', u'Os': u'linux', u'Version': u'17.10.0-ce'}
- 参数:
base_url (str) -- 指向Docker服务器的URL。例如,
unix:///var/run/docker.sock
或tcp://127.0.0.1:1234
。version (str) -- 要使用的API的版本。设为
auto
自动检测服务器的版本。默认:1.35
timeout (int) -- API调用的默认超时时间,单位为秒。
tls (bool or
TLSConfig
) -- 启用TLS。经过True
使用默认选项启用它,或将TLSConfig
对象以使用自定义配置。user_agent (str) -- 为对服务器的请求设置自定义用户代理。
credstore_env (dict) -- 调用凭据存储进程时覆盖环境变量。
use_ssh_client (bool) -- 如果设置为 True ,通过向ssh客户端发出命令来建立ssh连接。确保在主机上安装并配置了ssh客户端。
max_pool_size (int) -- 要保存在池中的最大连接数。
配置¶
容器¶
镜像¶
构建镜像¶
网络¶
卷¶
在容器中执行命令¶
Swarms¶
服务¶
插件¶
秘密¶
Docker后台进程¶
配置类型¶
- class ConfigReference(config_id, config_name, filename=None, uid=None, gid=None, mode=292)¶
要用作
ContainerSpec
。描述如何在服务的容器内访问配置。- 参数:
config_id (string) -- 配置的ID
config_name (string) -- 创建时定义的配置名称。
filename (string) -- 包含配置的文件的名称。如果未指定,则默认为配置的名称。
uid (string) -- 配置文件所有者的UID。默认:0
gid (string) -- 配置文件组的GID。默认:0
mode (int) -- 容器内部的文件访问模式。默认:0o444
- class ContainerSpec(image, command=None, args=None, hostname=None, env=None, workdir=None, user=None, labels=None, mounts=None, stop_grace_period=None, secrets=None, tty=None, groups=None, open_stdin=None, read_only=None, stop_signal=None, healthcheck=None, hosts=None, dns_config=None, configs=None, privileges=None, isolation=None, init=None, cap_add=None, cap_drop=None, sysctls=None)¶
描述作为任务一部分的容器的行为,这些容器在声明
TaskTemplate
。- 参数:
image (string) -- 要用于容器的图像名称。
command (string or list) -- 要在映像中运行的命令。
args (
list
) -- 命令的参数。hostname (string) -- 要在容器上设置的主机名。
env (dict) -- 环境变量。
workdir (string) -- 要在其中运行命令的工作目录。
user (string) -- 容器内的用户。
labels (dict) -- 与服务关联的标签映射。
mounts (
list
) -- 要添加到作为服务一部分创建的容器中的装载的规范列表。请参阅Mount
类获取详细信息。stop_grace_period (int) -- 在强制终止容器之前等待容器终止的时间长度。
secrets (
list
) -- 清单SecretReference
以便在集装箱内可用。tty (boolean) -- 是否应分配伪TTY。
groups (
list
) -- 容器进程将以其身份运行的其他组的列表。open_stdin (boolean) -- 打开
stdin
read_only (boolean) -- 将容器的根文件系统挂载为只读。
stop_signal (string) -- 设置停止服务容器的信号
healthcheck (Healthcheck) -- 此服务的运行状况检查配置。
hosts (
dict
) -- 要添加到容器的主机到IP映射的集合hosts
文件。dns_config (DNSConfig) -- 解析程序配置文件中与DNS相关的配置规范。
configs (
list
) -- 清单ConfigReference
将向该服务公开。privileges (Privileges) -- 服务容器的安全选项。
isolation (string) -- 服务的容器使用的隔离技术。仅用于Windows容器。
init (boolean) -- 在容器内运行一个init,用于转发信号和获取进程。
cap_add (
list
) -- 要添加到容器默认集的内核功能列表。cap_drop (
list
) -- 要从容器的默认设置中删除的内核功能列表。sysctls (
dict
) -- 要添加到容器中的sysctl值的字典
- class DNSConfig(nameservers=None, search=None, options=None)¶
解析程序配置文件中与域名系统相关的配置规范 (
resolv.conf
)。这是一个ContainerSpec
定义。- 参数:
nameservers (
list
) -- 名称服务器的IP地址。search (
list
) -- 用于主机名查找的搜索列表。options (
list
) -- 要修改的内部解析器变量的列表(例如,debug
,ndots:3
等)。
- class DriverConfig(name, options=None)¶
指示要使用的驱动程序及其配置。可用作
log_driver
在一个ContainerSpec
,适用于 driver_config 在卷中Mount
,或作为中的驱动程序对象create_secret()
。- 参数:
name (string) -- 要使用的驱动程序的名称。
options (dict) -- 驱动程序特定选项。默认:
None
。
- class EndpointSpec(mode=None, ports=None)¶
描述用于访问服务和对服务进行负载平衡的属性。
- 参数:
mode (string) -- 用于任务之间的内部负载平衡的解析模式 (
'vip'
或'dnsrr'
)。默认为'vip'
如未提供,请填写。ports (dict) -- 此服务可从外部访问的公开端口,其形式为
{ published_port: target_port }
或{ published_port: <port_config_tuple> }
。端口配置元组格式为(target_port [, protocol [, publish_mode]])
。只有在以下情况下才能提供端口vip
使用分辨率模式。
- class Healthcheck(**kwargs)¶
定义容器或服务的运行状况检查配置。
- 参数:
test (
list
or str) -- 为确定集装箱运行状况而执行的测试。可能的值:-空列表:从父映像继承运行状况检查-["NONE"]
:禁用健康检查-["CMD", args...]
:EXEC参数直接。-["CMD-SHELL", command]
:在系统的默认Shell中运行命令。如果提供了字符串,它将被用作CMD-SHELL
指挥部。interval (int) -- 两次检查之间的等待时间,单位为纳秒。它应为0或至少为1000000(1毫秒)。
timeout (int) -- 在认为支票已挂起之前等待的时间。它应为0或至少为1000000(1毫秒)。
retries (int) -- 将容器视为不健康所需的连续失败次数。
start_period (int) -- 容器在启动运行状况重试倒计时之前初始化的开始时间,单位为纳秒。它应为0或至少为1000000(1毫秒)。
- class IPAMConfig(driver='default', pool_configs=None, options=None)¶
创建与一起使用的IPAM(IP地址管理)配置字典
create_network()
。- 参数:
driver (str) -- 要使用的IPAM驱动程序。默认为
default
。pool_configs (
list
) -- 池配置列表 (IPAMPool
)。默认为空列表。options (dict) -- 驱动程序选项作为键值字典。默认为 None 。
示例
>>> ipam_config = docker.types.IPAMConfig(driver='default') >>> network = client.create_network('network1', ipam=ipam_config)
- class IPAMPool(subnet=None, iprange=None, gateway=None, aux_addresses=None)¶
创建要添加到的IPAM池配置词典
pool_configs
的参数IPAMConfig
。- 参数:
subnet (str) -- 使用CIDR表示法为此IPAM池自定义子网。默认为
None
。iprange (str) -- 使用CIDR表示法为此IPAM池中的端点自定义IP范围。默认为
None
。gateway (str) -- 池网关的自定义IP地址。
aux_addresses (dict) -- 一本……词典
key -> ip_address
指定需要由IPAM驱动程序分配的辅助地址的关系。
示例
>>> ipam_pool = docker.types.IPAMPool( subnet='124.42.0.0/16', iprange='124.42.0.0/24', gateway='124.42.0.254', aux_addresses={ 'reserved1': '124.42.1.1' } ) >>> ipam_config = docker.types.IPAMConfig( pool_configs=[ipam_pool])
- class LogConfig(**kwargs)¶
当作为参数提供给时,配置容器的日志记录
create_host_config()
。你可以参考 official logging driver documentation 以获取更多信息。- 参数:
type (str) -- 指示要使用的日志驱动程序。提供了一组有效的驱动程序作为
LogConfig.types
枚举。根据引擎版本和可用的日志记录插件,可能会接受其他值。config (dict) -- 依赖于驱动程序的配置字典。有关有效配置密钥的列表,请参阅驱动程序文档。
示例
>>> from docker.types import LogConfig >>> lc = LogConfig(type=LogConfig.types.JSON, config={ ... 'max-size': '1g', ... 'labels': 'production_status,geo' ... }) >>> hc = client.create_host_config(log_config=lc) >>> container = client.create_container('busybox', 'true', ... host_config=hc) >>> client.inspect_container(container)['HostConfig']['LogConfig'] { 'Type': 'json-file', 'Config': {'labels': 'production_status,geo', 'max-size': '1g'} }
- class Mount(target, source, type='volume', read_only=False, consistency=None, propagation=None, no_copy=False, labels=None, driver_config=None, tmpfs_size=None, tmpfs_mode=None)¶
描述容器内装入的文件夹的配置。一份名单
Mount
将被用作ContainerSpec
。- 参数:
target (string) -- 容器路径。
source (string) -- 装载源(例如卷名或主机路径)。
type (string) -- 装载类型 (
bind
/volume
/tmpfs
/npipe
)。默认:volume
。read_only (bool) -- 装载是否应为只读。
consistency (string) -- 装载的一致性要求。其中之一
default` --
consistent --
cached --
delegated. --
propagation (string) -- 具有值的传播模式
[r]private
,[r]shared
,或[r]slave
。仅对bind
打字。no_copy (bool) -- 如果卷中应填充来自目标的数据,则为FALSE。默认:
False
。仅对volume
打字。labels (dict) -- 卷的用户定义的名称和标签。仅对
volume
打字。driver_config (DriverConfig) -- 卷驱动程序配置。仅对
volume
打字。tmpfs_size (int or string) -- Tmpf装载的大小,以字节为单位。
tmpfs_mode (int) -- Tmpf挂载的权限模式。
- class NetworkAttachmentConfig(target, aliases=None, options=None)¶
服务的网络连接选项。
- 参数:
target (str) -- 要连接的目标网络。可以是网络名称或ID。
aliases (
list
) -- 服务的可发现备用名称列表。options (
dict
) -- 网络目标的驱动程序连接选项。
- class Placement(constraints=None, preferences=None, platforms=None, maxreplicas=None)¶
放置约束将用作
TaskTemplate
- 参数:
constraints (
list
of str) -- 一系列约束条件preferences (
list
of tuple) -- 首选项提供了一种使调度程序了解诸如拓扑等因素的方法。它们按照从最高优先级到最低优先级的顺序提供,表示为(strategy, descriptor)
元组。看见PlacementPreference
了解更多细节。maxreplicas (int) -- 每个节点的最大复制副本数量
platforms (
list
of tuple) -- 平台列表,表示为(arch, os)
元组
- class PlacementPreference(strategy, descriptor)¶
要用作以下项的首选项列表中的元素的放置首选项
Placement
物体。- 参数:
strategy (string) -- 要实施的配售策略。目前,唯一受支持的策略是
spread
。descriptor (string) -- 标签描述符。对于分散策略,调度器将尝试将任务均匀地分布在由该标签标识的节点组上。
- class Privileges(credentialspec_file=None, credentialspec_registry=None, selinux_disable=None, selinux_user=None, selinux_role=None, selinux_type=None, selinux_level=None)¶
服务容器的安全选项。这是一个
ContainerSpec
定义。- 参数:
credentialspec_file (str) -- 从此文件加载凭据规范。该文件由守护进程读取,并且必须位于docker data目录的CredentialSpes子目录中,该子目录默认为
C:\ProgramData\Docker\
在Windows上。不能与凭据规范_注册表结合使用。credentialspec_registry (str) -- Load credential spec from this value in the Windows registry. The specified registry value must be located in:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion \Virtualization\Containers\CredentialSpecs
. Can not be combined with credentialspec_file.selinux_disable (boolean) -- 禁用SELinux
selinux_user (string) -- SELinux用户标签
selinux_role (string) -- SELinux角色标签
selinux_type (string) -- SELinux类型标签
selinux_level (string) -- SELinux级别标签
- class Resources(cpu_limit=None, mem_limit=None, cpu_reservation=None, mem_reservation=None, generic_resources=None)¶
配置容器的资源分配
ContainerSpec
。- 参数:
cpu_limit (int) -- 以10^9个CPU共享为单位的CPU限制。
mem_limit (int) -- 内存限制(字节)。
cpu_reservation (int) -- 以10^9个CPU共享为单位的CPU预留。
mem_reservation (int) -- 内存保留(以字节为单位)。
generic_resources (dict or
list
) -- 节点级通用资源,例如GPU,使用以下格式:{ resource_name: resource_value }
。或者,由引擎API定义的资源规范的列表。
- class RestartPolicy(condition='none', delay=0, max_attempts=0, window=0)¶
在创建
ContainerSpec
,指示容器在停止或失败后是否应重新启动。- 参数:
condition (string) -- 重新启动的条件 (
none
,on-failure
,或any
)。默认: none 。delay (int) -- 重新启动尝试之间的延迟。默认:0
max_attempts (int) -- 放弃之前重新启动给定容器的最大尝试次数。默认值为0,将被忽略。
window (int) -- 用于评估重启策略的时间窗口。默认值为0,表示无边界。
- class RollbackConfig(parallelism=0, delay=None, failure_action='continue', monitor=None, max_failure_ratio=None, order=None)¶
用于指定服务执行容器回滚的方式
- 参数:
parallelism (int) -- 一次迭代中要回滚的最大任务数(0表示无限并行)。默认:0
delay (int) -- 回滚之间的时间量,以纳秒为单位。
failure_action (string) -- 回滚任务无法运行或在回滚期间停止运行时要执行的操作。可接受的值为
continue
,pause
或rollback
。默认:continue
monitor (int) -- 监视每个回滚任务是否失败的时间量,以纳秒为单位。
max_failure_ratio (float) -- 在调用失败操作之前回滚期间可能失败的任务的百分比,指定为介于0和1之间的浮点数。默认值:0
order (string) -- 指定展开回滚任务时的操作顺序。要么
start-first
或stop-first
都被接受了。
- class SecretReference(secret_id, secret_name, filename=None, uid=None, gid=None, mode=292)¶
要用作
ContainerSpec
。描述如何在服务的容器内访问机密。- 参数:
secret_id (string) -- 机密的ID
secret_name (string) -- Secret在创建时定义的名称。
filename (string) -- 包含密码的文件的名称。如果未指定,则默认为密码的名称。
uid (string) -- 机密文件所有者的UID。默认:0
gid (string) -- 秘密文件组的GID。默认:0
mode (int) -- 容器内部的文件访问模式。默认:0o444
- class ServiceMode(mode, replicas=None, concurrency=None)¶
指示服务或作业应部署为复制服务还是全局服务,以及相关参数
- 参数:
mode (string) -- 可以是其中之一
replicated
,global
,replicated-job
或global-job
replicas (int) -- 复制副本的数量。仅适用于复制的服务。
concurrency (int) -- 并发作业数。仅用于复制的作业服务。
- class SwarmExternalCA(url, protocol=None, options=None, ca_cert=None)¶
用于将签名请求转发到外部证书颁发机构的配置。
- 参数:
url (string) -- 应将证书签名请求发送到的URL。
protocol (string) -- 用于与外部CA通信的协议。
options (dict) -- 具有密钥/值对的对象,这些密钥/值对被解释为外部CA驱动程序的协议特定选项。
ca_cert (string) -- 此外部CA用来颁发TLS证书的根CA证书(采用PEM格式)(如果未提供,则假定为当前的群集根CA证书)。
- class SwarmSpec(*args, **kwargs)¶
描述群的配置和选项。使用
create_swarm_spec()
实例化,实例化
- class TaskTemplate(container_spec, resources=None, restart_policy=None, placement=None, log_driver=None, networks=None, force_update=None)¶
描述创建或更新服务时要使用的任务规范。
- 参数:
container_spec (ContainerSpec) -- 容器的容器设置作为此任务的一部分启动。
log_driver (DriverConfig) -- 作为服务的一部分创建的容器的日志配置。
resources (Resources) -- 适用于作为服务的一部分创建的每个单独容器的资源要求。
restart_policy (RestartPolicy) -- 适用于作为此服务的一部分创建的容器的重新启动策略规范。
placement (Placement) -- 调度器的放置说明。如果改为传递列表,则假定它是约束列表,作为
Placement
对象。networks (
list
) -- 网络名称或ID列表或NetworkAttachmentConfig
将服务附加到。force_update (int) -- 即使没有更改相关参数也会触发更新的计数器。
- class Ulimit(**kwargs)¶
创建要与一起使用的ulimit声明
create_host_config()
。- 参数:
name (str) -- 这将适用于哪个极限。有效名称可以在GNU/Linux系统上的‘/etc/security/limits.conf’中找到。
soft (int) -- 此ulimit的软限制。可选的。
hard (int) -- 此极限的硬限制。可选的。
示例
>>> nproc_limit = docker.types.Ulimit(name='nproc', soft=1024) >>> hc = client.create_host_config(ulimits=[nproc_limit]) >>> container = client.create_container( 'busybox', 'true', host_config=hc ) >>> client.inspect_container(container)['HostConfig']['Ulimits'] [{'Name': 'nproc', 'Hard': 0, 'Soft': 1024}]
- class UpdateConfig(parallelism=0, delay=None, failure_action='continue', monitor=None, max_failure_ratio=None, order=None)¶
用于指定服务执行容器更新的方式。
- 参数:
parallelism (int) -- 一次迭代中要更新的最大任务数(0表示无限并行)。默认值:0。
delay (int) -- 两次更新之间的时间量,单位为纳秒。
failure_action (string) -- 更新任务无法运行或在更新过程中停止运行时要执行的操作。可接受的值为
continue
,pause
,以及rollback
从API v1.28开始。默认:continue
monitor (int) -- 监视每个更新的任务是否失败的时间量,以纳秒为单位。
max_failure_ratio (float) -- 在调用失败操作之前的更新过程中可能失败的任务的百分比,指定为介于0和1之间的浮点数。默认值:0
order (string) -- 指定展开更新任务时的操作顺序。要么
start-first
或stop-first
都被接受了。