低级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.socktcp://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) -- 要保存在池中的最大连接数。

配置

class ConfigApiMixin
configs(filters=None)

列出配置

参数:
  • filters (list. Available) -- 要在配置上处理的筛选器的映射

  • filters -- names

返回(List):配置列表

create_config(name, data, labels=None, templating=None)

创建配置

参数:
  • name (string) -- 配置的名称

  • data (bytes) -- 要存储的配置数据

  • labels (dict) -- 要分配给配置的标签映射

  • templating (dict) -- 包含要使用的模板驱动程序名称的字典,表示为{name:<模板驱动程序名称>}

返回(Dict):新创建的配置的ID

inspect_config(id)

检索配置元数据

参数:

id (string) -- 要检查的配置的完整ID

返回(DICT):元数据词典

抛出:

docker.errors.NotFound -- 如果不存在具有该ID配置

remove_config(id)

删除配置

参数:

id (string) -- 要删除的配置的完整ID

返回(布尔值):如果成功,则为True

抛出:

docker.errors.NotFound -- 如果不存在具有该ID配置

容器

class ContainerApiMixin
attach(container, stdout=True, stderr=True, stream=False, logs=False, demux=False)

附着在容器上。

这个 .logs() 函数是此方法的包装器,如果您希望在不首先检索整个Backlog的情况下获取/流容器输出,则可以使用它。

参数:
  • container (str) -- 要附加到的容器。

  • stdout (bool) -- 包括标准输出。

  • stderr (bool) -- 包括stderr。

  • stream (bool) -- 以字符串迭代器的形式逐步返回容器输出,而不是单个字符串。

  • logs (bool) -- 包括容器以前的输出。

  • demux (bool) -- 将stdout和stderr分开。

返回:

默认情况下,容器的输出为单个字符串(两个If demux=True :一个用于标准输出,一个用于标准错误)。如果 stream=True ,输出字符串的迭代器。如果 demux=True 返回两个迭代器:一个用于stdout,一个用于stderr。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

attach_socket(container, params=None, ws=False)

喜欢 attach ,但返回HTTP请求的基础类似套接字的对象。

参数:
  • container (str) -- 要附加到的容器。

  • params (dict) -- 请求参数词典(例如 stdoutstderrstream )。为 detachKeys ,默认使用~/.docker/config.json。

  • ws (bool) -- 使用WebSockets而不是原始的HTTP。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

commit(container, repository=None, tag=None, message=None, author=None, pause=True, changes=None, conf=None)

将容器提交到映像。类似于 docker commit 指挥部。

参数:
  • container (str) -- 容器的镜像哈希

  • repository (str) -- 要将映像推送到的存储库

  • tag (str) -- 要推送的标签

  • message (str) -- 提交消息

  • author (str) -- 作者的姓名

  • pause (bool) -- 提交前是否暂停容器

  • changes (str) -- 提交时要应用的Dockerfile说明

  • conf (dict) -- 容器的配置。请参阅 Engine API documentation 有关详细信息,请参阅。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

containers(quiet=False, all=False, trunc=False, latest=False, since=None, before=None, limit=-1, size=False, filters=None)

列出容器。类似于 docker ps 指挥部。

参数:
  • quiet (bool) -- 仅显示数字ID

  • all (bool) -- 显示所有容器。默认情况下,仅显示正在运行的容器

  • trunc (bool) -- 截断输出

  • latest (bool) -- 仅显示最新创建的容器,包括未运行的容器。

  • since (str) -- 仅显示自ID或名称以来创建的容器,包括未运行的容器

  • before (str) -- 仅显示在ID或名称之前创建的容器,包括未运行的容器

  • limit (int) -- 显示 limit 上次创建的容器,包括未运行的容器

  • size (bool) -- 显示大小

  • filters (dict) -- 要在图像列表上处理的滤镜。可用过滤器:- exited (int): Only containers with specified exit code - status (str): One of restarting, running, paused, exited - label (str|list): format either "key", "key=value" or a list of such. - id (str): The id of the container. - name (str): The name of the container. - ancestor (str): Filter by container ancestor. Format of <image-name>[:tag], <image-id>, or <image@digest>. - before (str): Only containers created before a particular container. Give the container name or id. - since (str): Only containers created after a particular container. Give container name or id. A comprehensive list can be found in the documentation for docker ps

返回:

一份词典清单,每个容器一个

抛出:

docker.errors.APIError -- 如果服务器返回错误。

create_container(image, command=None, hostname=None, user=None, detach=False, stdin_open=False, tty=False, ports=None, environment=None, volumes=None, network_disabled=False, name=None, entrypoint=None, working_dir=None, domainname=None, host_config=None, mac_address=None, labels=None, stop_signal=None, networking_config=None, healthcheck=None, stop_timeout=None, runtime=None, use_config_proxy=True, platform=None)

创建一个容器。参数类似于 docker run 命令,除非它不支持附加选项 (-a )。

直接传递给此函数的参数是独立于主机的配置选项。特定于主机的配置与 host_config 争论。通常,您会希望将此方法与 create_host_config() 方法来生成 host_config

Port bindings

端口绑定分两部分完成:首先,提供要在容器内打开的端口列表 ports 参数,然后使用 host_config 参数。例如:

container_id = client.api.create_container(
    'busybox', 'ls', ports=[1111, 2222],
    host_config=client.api.create_host_config(port_bindings={
        1111: 4567,
        2222: None
    })
)

您可以限制将暴露端口的主机地址,如下所示:

client.api.create_host_config(
    port_bindings={1111: ('127.0.0.1', 4567)}
)

或未分配主机端口:

client.api.create_host_config(port_bindings={1111: ('127.0.0.1',)})

如果您希望使用UDP而不是TCP(默认),则需要在配置和主机配置中声明端口:

container_id = client.api.create_container(
    'busybox', 'ls', ports=[(1111, 'udp'), 2222],
    host_config=client.api.create_host_config(port_bindings={
        '1111/udp': 4567, 2222: None
    })
)

要将多个主机端口绑定到单个容器端口,请使用以下语法:

client.api.create_host_config(port_bindings={
    1111: [1234, 4567]
})

您也可以将多个IP绑定到单个容器端口:

client.api.create_host_config(port_bindings={
    1111: [
        ('192.168.0.100', 1234),
        ('192.168.0.101', 1234)
    ]
})

Using volumes

卷声明分两部分完成。属性提供用作容器内挂载点的路径列表。 volumes 参数,并声明从 host_config 一节。

container_id = client.api.create_container(
    'busybox', 'ls', volumes=['/mnt/vol1', '/mnt/vol2'],
    host_config=client.api.create_host_config(binds={
        '/home/user1/': {
            'bind': '/mnt/vol2',
            'mode': 'rw',
        },
        '/var/www': {
            'bind': '/mnt/vol1',
            'mode': 'ro',
        },
        '/autofs/user1': {
            'bind': '/mnt/vol3',
            'mode': 'rw',
            'propagation': 'shared'
        }
    })
)

您也可以将绑定指定为列表。此代码等同于上面的示例:

container_id = client.api.create_container(
    'busybox', 'ls', volumes=['/mnt/vol1', '/mnt/vol2', '/mnt/vol3'],
    host_config=client.api.create_host_config(binds=[
        '/home/user1/:/mnt/vol2',
        '/var/www:/mnt/vol1:ro',
        '/autofs/user1:/mnt/vol3:rw,shared',
    ])
)

Networking

属性指定要将容器连接到的网络。 networking_config 参数。在创建时,您只能将一个容器连接到单个网络,但您可以使用 connect_container_to_network()

例如:

networking_config = client.api.create_networking_config({
    'network1': client.api.create_endpoint_config(
        ipv4_address='172.28.0.124',
        aliases=['foo', 'bar'],
        links=['container2']
    )
})

ctnr = client.api.create_container(
    img, command, networking_config=networking_config
)
参数:
  • image (str) -- 要运行的映像

  • command (str or list) -- 要在容器中运行的命令

  • hostname (str) -- 容器的可选主机名

  • user (str or int) -- 用户名或UID

  • detach (bool) -- 分离模式:后台运行CONTAINER并返回容器ID

  • stdin_open (bool) -- 使STDIN保持打开状态,即使未附着

  • tty (bool) -- 分配一个伪TTY

  • ports (list of ints) -- 端口号列表

  • environment (dict or list) -- 以下格式的词典或字符串列表 ["PASSWORD=xxx"]{"PASSWORD": "xxx"}

  • volumes (str or list) -- 容器内用作卷的路径列表。

  • network_disabled (bool) -- 禁用联网

  • name (str) -- 容器的名称

  • entrypoint (str or list) -- 入口点

  • working_dir (str) -- 工作目录的路径

  • domainname (str) -- 容器要使用的域名

  • host_config (dict) -- 使用创建的词典 create_host_config()

  • mac_address (str) -- 要分配容器的mac地址

  • labels (dict or list) -- 名称-值标签的词典(例如 {"label1": "value1", "label2": "value2"} )或要用空值设置的标签名称列表(例如 ["label1", "label2"] )

  • stop_signal (str) -- 用于停止集装箱的停止信号(例如 SIGINT )。

  • stop_timeout (int) -- 停止容器的超时,以秒为单位。默认:10

  • networking_config (dict) -- 由生成的网络配置 create_networking_config()

  • runtime (str) -- 要与此容器一起使用的运行时。

  • healthcheck (dict) -- 指定要执行的测试以检查容器是否正常。

  • use_config_proxy (bool) -- 如果 True ,并且如果Docker客户端配置文件 (~/.docker/config.json 默认情况下)包含代理配置,则将在要创建的容器中设置相应的环境变量。

  • platform (str) -- 格式中的平台 os[/arch[/variant]]

返回:

具有图像‘ID’键和‘WARNING’键的词典。

抛出:
  • docker.errors.ImageNotFound -- 如果指定的图像不存在。

  • docker.errors.APIError -- 如果服务器返回错误。

create_container_config(*args, **kwargs)
create_container_from_config(config, name=None, platform=None)
create_endpoint_config(*args, **kwargs)

创建要与一起使用的端点配置字典 create_networking_config()

参数:
  • aliases (list) -- 此终结点的别名列表。该列表中的名称可以在网络中使用以到达容器。默认为 None

  • links (dict) -- 属性映射此终结点的链接 {'container': 'alias'} 格式化。别名是可选的。此DICT中声明的容器将使用提供的别名链接到此容器。默认为 None

  • ipv4_address (str) -- 使用IPv4协议的网络上此容器的IP地址。默认为 None

  • ipv6_address (str) -- 使用IPv6协议的网络上此容器的IP地址。默认为 None

  • link_local_ips (list) -- 本地链路(IPv4/IPv6)地址列表。

  • driver_opt (dict) -- 提供给网络驱动程序的选项词典。默认为 None

返回:

(DICT)终端配置。

示例

>>> endpoint_config = client.api.create_endpoint_config(
    aliases=['web', 'app'],
    links={'app_db': 'db', 'another': None},
    ipv4_address='132.65.0.123'
)
create_host_config(*args, **kwargs)

创建一个词典,用于 host_config 参数为 create_container()

参数:
  • auto_remove (bool) -- 当容器的进程退出时,在守护程序端启用容器的自动删除。

  • binds (dict) -- 要绑定的卷。看见 create_container() 以获取更多信息。

  • blkio_weight_device -- 数据块IO权重(相对设备权重),格式为: [{"Path": "device_path", "Weight": weight}]

  • blkio_weight -- 数据块IO权重(相对权重),接受介于10和1000之间的权重值。

  • cap_add (list of str) -- 添加内核功能。例如, ["SYS_ADMIN", "MKNOD"]

  • cap_drop (list of str) -- 放弃内核功能。

  • cpu_period (int) -- 以微秒为单位的CPU周期长度。

  • cpu_quota (int) -- 容器在一个CPU周期内可以获得的微秒CPU时间。

  • cpu_shares (int) -- CPU占有率(相对权重)。

  • cpuset_cpus (str) -- 允许执行的CPU (0-30,1 )。

  • cpuset_mems (str) -- 允许执行的内存节点(MEM) (0-30,1 )。仅在NUMA系统上有效。

  • device_cgroup_rules (list) -- 要应用于容器的cgroup规则列表。

  • device_read_bps -- 限制设备的读取速率(字节/秒),其形式为: [{"Path": "device_path", "Rate": rate}]

  • device_read_iops -- 限制设备的读取速率(每秒IO)。

  • device_write_bps -- 限制设备的写入速率(每秒字节数)。

  • device_write_iops -- 限制设备的写入速率(每秒IO)。

  • devices (list) -- 将主机设备作为以下形式的字符串列表公开给容器 <path_on_host>:<path_in_container>:<cgroup_permissions> 。例如, /dev/sda:/dev/xvda:rwm 允许容器对主机的 /dev/sda 通过名为的节点 /dev/xvda 在集装箱里。

  • device_requests (list) -- 将主机资源(如GPU)公开给容器,作为 docker.types.DeviceRequest 实例。

  • dns (list) -- 设置自定义的DNS服务器。

  • dns_opt (list) -- 要添加到容器的 resolv.conf 文件

  • dns_search (list) -- 域名系统搜索域。

  • extra_hosts (dict) -- 要在容器内解析的其他主机名,作为主机名到IP地址的映射。

  • group_add (list) -- 容器进程将以其身份运行的其他组名和/或ID的列表。

  • init (bool) -- 在转发信号和获取进程的容器内运行init

  • ipc_mode (str) -- 设置容器的IPC模式。

  • isolation (str) -- 使用隔离技术。默认: None

  • links (dict) -- 链接的映射使用 {'container': 'alias'} 格式化。别名是可选的。此DICT中声明的容器将使用提供的别名链接到新容器。默认: None

  • log_config (LogConfig) -- 日志记录配置

  • lxc_conf (dict) -- LXC配置。

  • mem_limit (float or str) -- 内存限制。接受浮点值(以字节为单位表示所创建容器的内存限制)或带有单元标识字符的字符串 (100000b1000k128m1g )。如果指定的字符串不带单位字符,则将字节假定为

  • mem_reservation (float or str) -- 内存软限制。

  • mem_swappiness (int) -- 调整容器的内存交换行为。接受介于0和100之间的数字。

  • memswap_limit (str or int) -- 容器允许消耗的最大内存+交换空间。

  • mounts (list) -- 要加到集装箱上的底座规范。更强大的替代方案 binds 。列表中的每一项预计都是 docker.types.Mount 对象。

  • network_mode (str) -- 以下其中一项: bridge 为桥接网络上的容器创建新的网络堆栈。- none 此容器没有网络连接。- container:<name|id> 重用另一个容器的网络堆栈。- host 使用主机网络堆栈。此模式与不兼容 port_bindings

  • oom_kill_disable (bool) -- 是否禁用OOM杀手。

  • oom_score_adj (int) -- 一个整数值,包含为调整OOM杀手首选项而为容器指定的分数。

  • pid_mode (str) -- 如果设置为 host ,则在容器内使用主机ID命名空间。

  • pids_limit (int) -- 调整容器的PID限制。集 -1 不限量。

  • port_bindings (dict) -- 看见 create_container() 以获取更多信息。与不兼容 host 在……里面 network_mode

  • privileged (bool) -- 将扩展权限授予此容器。

  • publish_all_ports (bool) -- 将所有端口发布到主机。

  • read_only (bool) -- 将容器的根文件系统挂载为只读。

  • restart_policy (dict) -- 容器退出时重新启动。配置为带有关键字的词典:- Name 其中之一 on-failure ,或 always 。- MaximumRetryCount 失败时重新启动容器的次数。

  • security_opt (list) -- 用于为MLS系统(如SELinux)自定义标签的字符串值列表。

  • shm_size (str or int) -- /dev/shm的大小(例如 1G )。

  • storage_opt (dict) -- 每个容器的存储驱动程序选项作为键-值映射。

  • sysctls (dict) -- 要在容器中设置的内核参数。

  • tmpfs (dict) -- 要挂载的临时文件系统,作为将容器内的路径映射到该路径的选项的字典。例如:..代码块::Python{‘/mnt/vol2’:‘’,‘/mnt/vol1’:‘Size=3G,uid=1000’}

  • ulimits (list) -- 要在容器内设置的U限制,作为 docker.types.Ulimit 实例。

  • userns_mode (str) -- 启用用户命名空间重新映射选项时,设置容器的用户命名空间模式。支持的值包括: host

  • uts_mode (str) -- 设置容器的UTS名称空间模式。支持的值包括: host

  • volumes_from (list) -- 从中获取卷的容器名称或ID的列表。

  • runtime (str) -- 要与此容器一起使用的运行时。

返回:

(词典)可以传递给 host_config 参数为 create_container()

示例

>>> client.api.create_host_config(
...     privileged=True,
...     cap_drop=['MKNOD'],
...     volumes_from=['nostalgic_newton'],
... )
{'CapDrop': ['MKNOD'], 'LxcConf': None, 'Privileged': True,
'VolumesFrom': ['nostalgic_newton'], 'PublishAllPorts': False}
create_networking_config(*args, **kwargs)

创建网络配置字典以用作 networking_config 中的参数 create_container()

参数:

endpoints_config (dict) -- 将网络名称映射到由生成的端点配置的词典 create_endpoint_config()

返回:

(词典)网络配置。

示例

>>> client.api.create_network('network1')
>>> networking_config = client.api.create_networking_config({
    'network1': client.api.create_endpoint_config()
})
>>> container = client.api.create_container(
    img, command, networking_config=networking_config
)
diff(container)

检查容器的文件系统上的更改。

参数:

container (str) -- 要区分的容器

返回:

(列表)包含属性的词典列表 PathKind

抛出:

docker.errors.APIError -- 如果服务器返回错误。

export(container, chunk_size=2097152)

将文件系统的内容导出为TAR归档。

参数:
  • container (str) -- 要导出的容器

  • chunk_size (int) -- 生成器的每次迭代返回的字节数。如果 None ,数据将在接收时进行流传输。默认:2 MB

返回:

归档的文件系统数据流

返回类型:

(generator)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

get_archive(container, path, chunk_size=2097152, encode_stream=False)

从TAR存档形式的容器中检索文件或文件夹。

参数:
  • container (str) -- 文件所在的容器

  • path (str) -- 要检索的文件或文件夹的路径

  • chunk_size (int) -- 生成器的每次迭代返回的字节数。如果 None ,数据将在接收时进行流传输。默认:2 MB

  • encode_stream (bool) -- 确定是否应在传输期间对数据进行编码(GZIP压缩)。默认:FALSE

返回:

第一个元素是原始TAR数据流。第二个元素是包含以下内容的词典 stat 有关指定的 path

返回类型:

(tuple)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> c = docker.APIClient()
>>> f = open('./sh_bin.tar', 'wb')
>>> bits, stat = c.api.get_archive(container, '/bin/sh')
>>> print(stat)
{'name': 'sh', 'size': 1075464, 'mode': 493,
 'mtime': '2018-10-01T15:37:48-07:00', 'linkTarget': ''}
>>> for chunk in bits:
...    f.write(chunk)
>>> f.close()
inspect_container(container)

docker inspect 命令,但仅适用于容器。

参数:

container (str) -- 要检查的集装箱

返回:

类似于…的输出 docker inspect ,而是作为一个单独的判决

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

kill(container, signal=None)

杀死一个容器或向一个容器发送信号。

参数:
  • container (str) -- 要杀死的容器

  • signal (str or int) -- 要发送的信号。默认为 SIGKILL

抛出:

docker.errors.APIError -- 如果服务器返回错误。

logs(container, stdout=True, stderr=True, stream=False, timestamps=False, tail='all', since=None, follow=None, until=None)

从容器中获取日志。类似于 docker logs 指挥部。

这个 stream 参数使 logs 函数返回一个阻塞生成器,您可以迭代该生成器以在发生时检索日志输出。

参数:
  • container (str) -- 要从中获取日志的容器

  • stdout (bool) -- 到达 STDOUT 。默认 True

  • stderr (bool) -- 到达 STDERR 。默认 True

  • stream (bool) -- 流传输响应。默认 False

  • timestamps (bool) -- 显示时间戳。默认 False

  • tail (str or int) -- 在日志末尾输出指定的行数。行数的整数或字符串 all 。默认 all

  • since (datetime, int, or float) -- 显示自给定日期时间、整数纪元(以秒为单位)或浮点数(以小数秒为单位)以来的日志

  • follow (bool) -- 遵循日志输出。默认 False

  • until (datetime, int, or float) -- 显示在给定日期时间、整数纪元(秒)或浮点数(小数秒)之前发生的日志

返回:

(生成器或字符串)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

pause(container)

暂停容器中的所有进程。

参数:

container (str) -- 要暂停的容器

抛出:

docker.errors.APIError -- 如果服务器返回错误。

port(container, private_port)

查找NAT设置为的面向公众的端口 private_port 。与 docker port 指挥部。

参数:
  • container (str) -- 要查找的容器

  • private_port (int) -- 要检查的专用端口

返回:

主机端口的映射

返回类型:

(list of dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

$ docker run -d -p 80:80 ubuntu:14.04 /bin/sleep 30
7174d6347063a83f412fad6124c99cffd25ffe1a0807eb4b7f9cec76ac8cb43b
>>> client.api.port('7174d6347063', 80)
[{'HostIp': '0.0.0.0', 'HostPort': '80'}]
prune_containers(filters=None)

删除停止的容器

参数:

filters (dict) -- 要在清理列表上处理的筛选器。

返回:

包含已删除容器ID列表和回收的磁盘空间量(以字节为单位)的DICT。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

put_archive(container, path, data)

使用TAR存档作为源,在现有容器中插入文件或文件夹。

参数:
  • container (str) -- 将在其中提取文件的容器

  • path (str) -- 将在其中提取文件的容器内的路径。必须存在。

  • data (bytes or stream) -- 要提取的TAR数据

返回:

如果调用成功,则为True。

返回类型:

(bool)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

remove_container(container, v=False, link=False, force=False)

取出一个容器。类似于 docker rm 指挥部。

参数:
  • container (str) -- 要移除的容器

  • v (bool) -- 删除与容器关联的卷

  • link (bool) -- 删除指定的链接,而不是基础容器

  • force (bool) -- 强制移除运行中的容器(使用 SIGKILL )

抛出:

docker.errors.APIError -- 如果服务器返回错误。

rename(container, name)

重命名容器。类似于 docker rename 指挥部。

参数:
  • container (str) -- 要重命名的容器的ID

  • name (str) -- 容器的新名称

抛出:

docker.errors.APIError -- 如果服务器返回错误。

resize(container, height, width)

调整tty会话的大小。

参数:
  • container (str or dict) -- 要调整大小的容器

  • height (int) -- TTY会话高度

  • width (int) -- TTY会话宽度

抛出:

docker.errors.APIError -- 如果服务器返回错误。

restart(container, timeout=10)

重新启动容器。类似于 docker restart 指挥部。

参数:
  • container (str or dict) -- 要重新启动的容器。如果是判决书, Id 使用了密钥。

  • timeout (int) -- 在终止容器之前尝试停止的秒数。一旦被杀死,它将被重启。默认为10秒。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

start(container, *args, **kwargs)

启动一个容器。类似于 docker start 命令,但不支持附加选项。

Deprecation warning: 将配置选项传入 start 不再受支持。用户应在中提供主机配置选项 host_config 的参数 create_container()

参数:

container (str) -- 要启动的容器

抛出:
  • docker.errors.APIError -- 如果服务器返回错误。

  • docker.errors.DeprecatedMethod -- 如果除此之外还有任何争论 container 都提供了。

示例

>>> container = client.api.create_container(
...     image='busybox:latest',
...     command='/bin/sleep 30')
>>> client.api.start(container=container.get('Id'))
stats(container, decode=None, stream=True, one_shot=None)

特定容器的流统计信息。类似于 docker stats 指挥部。

参数:
  • container (str) -- 要从中流式传输统计信息的容器

  • decode (bool) -- 如果设置为TRUE,流将被动态解码为DICTS。仅在以下情况下适用 stream 是真的。默认情况下为False。

  • stream (bool) -- 如果设置为FALSE,则只返回当前统计信息,而不返回流。默认情况下为True。

  • one_shot (bool) -- 如果设置为真,则只获取一次统计信息,而不是等待2个周期。必须与stream=FALSE一起使用。默认情况下为False。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

stop(container, timeout=None)

停止容器。类似于 docker stop 指挥部。

参数:
  • container (str) -- 要停止的容器

  • timeout (int) -- 等待容器停止,然后发送 SIGKILL 。如果无,则将使用容器的StopTimeout值。默认:无

抛出:

docker.errors.APIError -- 如果服务器返回错误。

top(container, ps_args=None)

显示容器正在运行的进程。

参数:
  • container (str) -- 要检查的集装箱

  • ps_args (str) -- 传递给PS的可选参数(例如 aux )

返回:

顶端的输出

返回类型:

(str)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

unpause(container)

取消暂停容器中的所有进程。

参数:

container (str) -- 要取消暂停的容器

update_container(container, blkio_weight=None, cpu_period=None, cpu_quota=None, cpu_shares=None, cpuset_cpus=None, cpuset_mems=None, mem_limit=None, mem_reservation=None, memswap_limit=None, kernel_memory=None, restart_policy=None)

更新一个或多个容器的资源配置。

参数:
  • container (str) -- 要检查的集装箱

  • blkio_weight (int) -- 数据块IO(相对重量),介于10%和1000之间

  • cpu_period (int) -- 限制CPU CFS(完全公平调度程序)周期

  • cpu_quota (int) -- 限制CPU CFS(完全公平调度程序)配额

  • cpu_shares (int) -- CPU占有率(相对权重)

  • cpuset_cpus (str) -- 允许执行的CPU

  • cpuset_mems (str) -- 允许在其中执行的MEMS

  • mem_limit (float or str) -- 内存限制

  • mem_reservation (float or str) -- 内存软限制

  • memswap_limit (int or str) -- 总内存(内存+交换),-1表示禁用交换

  • kernel_memory (int or str) -- 内核内存限制

  • restart_policy (dict) -- 重新启动策略字典

返回:

包含一个 Warnings 钥匙。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

wait(container, timeout=None, condition=None)

块,直到容器停止,然后返回其退出代码。类似于 docker wait 指挥部。

参数:
  • container (str or dict) -- 要等待的容器。如果是判决书, Id 使用了密钥。

  • timeout (int) -- 请求超时

  • condition (str) -- 等待容器状态达到给定条件,或者 not-running (默认), next-exit ,或 removed

返回:

API的响应作为一个Python字典,包括容器在 StatusCode 属性。

返回类型:

(dict)

抛出:
  • requests.exceptions.ReadTimeout -- 如果超过超时时间。

  • docker.errors.APIError -- 如果服务器返回错误。

镜像

class ImageApiMixin
get_image(image, chunk_size=2097152)

拍一张照片的油画。类似于 docker save 指挥部。

参数:
  • image (str) -- 要获取的图像名称

  • chunk_size (int) -- 生成器的每次迭代返回的字节数。如果 None ,数据将在接收时进行流传输。默认:2 MB

返回:

原始档案数据流。

返回类型:

(generator)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> image = client.api.get_image("busybox:latest")
>>> f = open('/tmp/busybox-latest.tar', 'wb')
>>> for chunk in image:
>>>   f.write(chunk)
>>> f.close()
history(image)

显示图像的历史记录。

参数:

image (str) -- 要显示其历史记录的图像

返回:

形象的历史

返回类型:

(list)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

images(name=None, quiet=False, all=False, filters=None)

列出图像。类似于 docker images 指挥部。

参数:
  • name (str) -- 仅显示属于存储库的图像 name

  • quiet (bool) -- 仅以列表形式返回数字ID。

  • all (bool) -- 显示中间图像层。默认情况下,这些内容会被过滤掉。

  • filters (dict) -- 要在图像列表上处理的滤镜。可用过滤器:- dangling (布尔)- label (字符串|列表):格式 "key""key=value" 或者一份这样的清单。

返回:

一个列表,条件是 quiet=True ,否则就是判决书。

返回类型:

(dict or list)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

import_image(src=None, repository=None, tag=None, image=None, changes=None, stream_src=False)

导入图像。类似于 docker import 指挥部。

如果 src 是字符串或Unicode字符串,它将首先被视为指向本地系统上的tarball的路径。如果读取该文件时出错, src 将被视为从中获取图像的URL。您还可以将打开的文件句柄作为 src 在这种情况下,将从该文件中读取数据。

如果 src 未设置,但 image 已设置,则 image 参数将作为要从中导入的现有图像的名称。

参数:
  • src (str or file) -- 压缩文件、URL或类似文件对象的路径

  • repository (str) -- 要创建的存储库

  • tag (str) -- 要应用的标记

  • image (str) -- 使用另一个图像,如 FROM Dockerfile参数

import_image_from_data(data, repository=None, tag=None, changes=None)

喜欢 import_image() ,但允许导入内存中的字节数据。

参数:
  • data (bytes collection) -- 包含有效TAR数据的字节集合

  • repository (str) -- 要创建的存储库

  • tag (str) -- 要应用的标记

import_image_from_file(filename, repository=None, tag=None, changes=None)

喜欢 import_image() ,但仅支持从磁盘上的TAR文件导入。

参数:
  • filename (str) -- TAR文件的完整路径。

  • repository (str) -- 要创建的存储库

  • tag (str) -- 要应用的标记

抛出:

IOError -- 文件不存在。

import_image_from_image(image, repository=None, tag=None, changes=None)

喜欢 import_image() ,但只支持从另一个图像导入,如 FROM Dockerfile参数。

参数:
  • image (str) -- 要从中导入的图像名称

  • repository (str) -- 要创建的存储库

  • tag (str) -- 要应用的标记

import_image_from_stream(stream, repository=None, tag=None, changes=None)
import_image_from_url(url, repository=None, tag=None, changes=None)

喜欢 import_image() ,但仅支持从URL导入。

参数:
  • url (str) -- 指向TAR文件的URL。

  • repository (str) -- 要创建的存储库

  • tag (str) -- 要应用的标记

inspect_distribution(image, auth_config=None)

通过联系注册处获取图像摘要和平台信息。

参数:
  • image (str) -- 要检查的映像名称

  • auth_config (dict) -- 覆盖在此请求的配置中找到的凭据。 auth_config 应包含 usernamepassword 钥匙是有效的。

返回:

包含分发数据的词典

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

inspect_image(image)

获取有关图像的详细信息。类似于 docker inspect 命令,但仅适用于图像。

参数:

image (str) -- 要检查的图像

返回:

类似于…的输出 docker inspect ,但作为一个

返回类型:

(dict)

单骰子

抛出:

docker.errors.APIError -- 如果服务器返回错误。

load_image(data, quiet=None)

加载以前使用以下命令保存的图像 get_image() (或 docker save )。类似于 docker load

参数:
  • data (binary) -- 要加载的图像数据。

  • quiet (boolean) -- 作为回应,禁止显示进度详细信息。

返回:

将输出作为JSON对象进行进度。仅适用于1.23以上的API版本

返回类型:

(generator)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

prune_images(filters=None)

删除未使用的图像

参数:

filters (dict) -- 要在清理列表上处理的筛选器。可用滤镜:-Dangling(Bool):设置为True(或1)时,仅修剪未使用和未标记的图像。

返回:

包含已删除图像ID列表和回收的磁盘空间量(以字节为单位)的DICT。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

pull(repository, tag=None, stream=False, auth_config=None, decode=False, platform=None, all_tags=False)

拉出一个图像。类似于 docker pull 指挥部。

参数:
  • repository (str) -- 要拉取的存储库

  • tag (str) -- 要拉的标签。如果 tagNone 或为空,则设置为 latest

  • stream (bool) -- 将输出作为生成器串流。一定要消耗发电机,否则可能会取消拉动。

  • auth_config (dict) -- 覆盖在此请求的配置中找到的凭据。 auth_config 应包含 usernamepassword 钥匙是有效的。

  • decode (bool) -- 将来自服务器的JSON数据解码为DICT。仅适用于 stream=True

  • platform (str) -- 格式中的平台 os[/arch[/variant]]

  • all_tags (bool) -- 调出所有图像标记、 tag 参数被忽略。

返回:

输出

返回类型:

(generator or str)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> resp = client.api.pull('busybox', stream=True, decode=True)
... for line in resp:
...     print(json.dumps(line, indent=4))
{
    "status": "Pulling image (latest) from busybox",
    "progressDetail": {},
    "id": "e72ac664f4f0"
}
{
    "status": "Pulling image (latest) from busybox, endpoint: ...",
    "progressDetail": {},
    "id": "e72ac664f4f0"
}
push(repository, tag=None, stream=False, auth_config=None, decode=False)

将映像或存储库推送到注册表。类似于 docker push 指挥部。

参数:
  • repository (str) -- 要推送到的存储库

  • tag (str) -- 要推送的可选标签

  • stream (bool) -- 将输出作为分块生成器进行流式处理

  • auth_config (dict) -- 覆盖在此请求的配置中找到的凭据。 auth_config 应包含 usernamepassword 钥匙是有效的。

  • decode (bool) -- 将来自服务器的JSON数据解码为DICT。仅适用于 stream=True

返回:

服务器的输出。

返回类型:

(generator or str)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> resp = client.api.push(
...     'yourname/app',
...     stream=True,
...     decode=True,
... )
... for line in resp:
...   print(line)
{'status': 'Pushing repository yourname/app (1 tags)'}
{'status': 'Pushing','progressDetail': {}, 'id': '511136ea3c5a'}
{'status': 'Image already pushed, skipping', 'progressDetail':{},
 'id': '511136ea3c5a'}
...
remove_image(image, force=False, noprune=False)

删除图像。类似于 docker rmi 指挥部。

参数:
  • image (str) -- 要删除的图像

  • force (bool) -- 强制删除图像

  • noprune (bool) -- 不删除未标记的父项

search(term, limit=None)

在Docker Hub上搜索图像。类似于 docker search 指挥部。

参数:
  • term (str) -- 要搜索的术语。

  • limit (int) -- 要返回的最大结果数。

返回:

搜索的响应。

返回类型:

(list of dicts)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

tag(image, repository, tag=None, force=False)

将图像标记到存储库中。类似于 docker tag 指挥部。

参数:
  • image (str) -- 要标记的图像

  • repository (str) -- 要为标记设置的存储库

  • tag (str) -- 标记名

  • force (bool) -- 力

返回:

True 如果成功

返回类型:

(bool)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> client.api.tag('ubuntu', 'localhost:5000/ubuntu', 'latest',
               force=True)

构建镜像

class BuildApiMixin
build(path=None, tag=None, quiet=False, fileobj=None, nocache=False, rm=False, timeout=None, custom_context=False, encoding=None, pull=False, forcerm=False, dockerfile=None, container_limits=None, decode=False, buildargs=None, gzip=False, shmsize=None, labels=None, cache_from=None, target=None, network_mode=None, squash=None, extra_hosts=None, platform=None, isolation=None, use_config_proxy=True)

类似于 docker build 指挥部。要么 pathfileobj 需要设置。 path 可以是本地路径(指向包含Dockerfile的目录)或远程URL。 fileobj 必须是Dockerfile的可读类文件对象。

如果已经有用于Docker构建上下文的tar文件(包括Dockerfile),请将一个类似文件的可读对象传递给 fileobj 而且还通过了 custom_context=True 。如果流也被压缩,则设置 encoding 设置为正确的值(例如 gzip )。

示例

>>> from io import BytesIO
>>> from docker import APIClient
>>> dockerfile = '''
... # Shared Volume
... FROM busybox:buildroot-2014.02
... VOLUME /data
... CMD ["/bin/sh"]
... '''
>>> f = BytesIO(dockerfile.encode('utf-8'))
>>> cli = APIClient(base_url='tcp://127.0.0.1:2375')
>>> response = [line for line in cli.build(
...     fileobj=f, rm=True, tag='yourname/volume'
... )]
>>> response
['{"stream":" ---\u003e a9eb17255234\n"}',
 '{"stream":"Step 1 : VOLUME /data\n"}',
 '{"stream":" ---\u003e Running in abdc1e6896c6\n"}',
 '{"stream":" ---\u003e 713bca62012e\n"}',
 '{"stream":"Removing intermediate container abdc1e6896c6\n"}',
 '{"stream":"Step 2 : CMD [\"/bin/sh\"]\n"}',
 '{"stream":" ---\u003e Running in dba30f2a1a7e\n"}',
 '{"stream":" ---\u003e 032b8b2855fc\n"}',
 '{"stream":"Removing intermediate container dba30f2a1a7e\n"}',
 '{"stream":"Successfully built 032b8b2855fc\n"}']
参数:
  • path (str) -- 包含Dockerfile的目录的路径

  • fileobj -- 要用作Dockerfile的文件对象。(或类似文件的对象)

  • tag (str) -- 要添加到最终图像的标记

  • quiet (bool) -- 是否返回状态

  • nocache (bool) -- 设置为时不使用缓存 True

  • rm (bool) -- 移除中间容器。这个 docker build 命令现在默认为 --rm=true ,但我们保留了旧的默认设置 False 保持向后兼容性

  • timeout (int) -- HTTP超时

  • custom_context (bool) -- 可选,如果使用 fileobj

  • encoding (str) -- 流的编码。设为 gzip 用于压缩

  • pull (bool) -- 下载DockerFiles中的From映像的所有更新

  • forcerm (bool) -- 始终删除中间容器,即使在构建不成功之后也是如此

  • dockerfile (str) -- 生成上下文中指向Dockerfile的路径

  • gzip (bool) -- 如果设置为 True ,使用GZIP压缩/编码

  • buildargs (dict) -- 构建参数词典

  • container_limits (dict) -- 应用于生成过程创建的每个容器的限制字典。有效密钥:-Memory(Int):设置构建内存交换的内存限制(Int):总内存(Memory+SWAP),-1表示禁用交换-cpushares(Int):CPU份额(相对权重)-cpusetcpus(Str):允许执行的CPU,例如, "0-3""0,1"

  • decode (bool) -- 如果设置为 True ,返回的流将被即时解码为DICT。默认 False

  • shmsize (int) -- 大小 /dev/shm 以字节为单位。大小必须大于0。如果省略,则系统使用64MB

  • labels (dict) -- 要在图像上设置的标签词典

  • cache_from (list) -- 用于构建缓存分辨率的图像列表

  • target (str) -- 要在多阶段Dockerfile中生成的生成阶段的名称

  • network_mode (str) -- 构建过程中运行命令的联网模式

  • squash (bool) -- 将生成的图像层挤压到单个层中。

  • extra_hosts (dict) -- 要作为主机名到IP地址的映射添加到构建容器中的/etc/hosts的额外主机。

  • platform (str) -- 格式中的平台 os[/arch[/variant]]

  • isolation (str) -- 构建过程中使用的隔离技术。默认: None

  • use_config_proxy (bool) -- 如果 True ,并且如果Docker客户端配置文件 (~/.docker/config.json 默认情况下)包含代理配置,则将在要构建的容器中设置相应的环境变量。

返回:

生成输出的生成器。

抛出:
  • docker.errors.APIError -- 如果服务器返回错误。

  • TypeError -- 如果两者都不是 path 也不是 fileobj 是指定的。

prune_builds(filters=None, keep_storage=None, all=None)

删除构建器缓存

参数:
  • filters (dict) -- 要在清理列表上处理的筛选器。需要Docker API v1.39+可用滤镜:-Dangling(Bool):设置为True(或1)时,仅修剪未使用和未标记的图像。-Until(Str):可以是Unix时间戳、日期格式的时间戳或相对于守护程序的本地时间计算的围棋持续时间字符串(例如10M、1H30M)。

  • keep_storage (int) -- 为缓存保留的磁盘空间量(以字节为单位)。需要Docker API v1.39+

  • all (bool) -- 删除所有类型的生成缓存。需要Docker API v1.39+

返回:

包含有关操作结果的信息的词典。这个 SpaceReclaimed Key表示回收的磁盘空间的字节数。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

网络

class NetworkApiMixin
connect_container_to_network(container, net_id, ipv4_address=None, ipv6_address=None, aliases=None, links=None, link_local_ips=None, driver_opt=None, mac_address=None)

将容器连接到网络。

参数:
  • container (str) -- 要连接到网络的容器ID/名称

  • net_id (str) -- 网络ID

  • aliases (list) -- 此终结点的别名列表。该列表中的名称可以在网络中使用以到达容器。默认为 None

  • links (list) -- 此终结点的链接列表。此列表中声明的容器将链接到此容器。默认为 None

  • ipv4_address (str) -- 使用IPv4协议的网络上此容器的IP地址。默认为 None

  • ipv6_address (str) -- 使用IPv6协议的网络上此容器的IP地址。默认为 None

  • link_local_ips (list) -- 本地链路(IPv4/IPv6)地址列表。

  • mac_address (str) -- 此容器在网络上的MAC地址。默认为 None

create_network(name, driver=None, options=None, ipam=None, check_duplicate=None, internal=False, labels=None, enable_ipv6=False, attachable=None, scope=None, ingress=None)

创建一个网络。类似于 docker network create

参数:
  • name (str) -- 网络名称

  • driver (str) -- 用于创建网络的驱动程序的名称

  • options (dict) -- 作为键值字典的驱动程序选项

  • ipam (IPAMConfig) -- 网络的可选自定义IP方案。

  • check_duplicate (bool) -- 请求守护程序检查同名网络。默认: None

  • internal (bool) -- 限制对网络的外部访问。默认 False

  • labels (dict) -- 要在网络上设置的标签映射。默认 None

  • enable_ipv6 (bool) -- 在网络上启用IPv6。默认 False

  • attachable (bool) -- 如果启用,并且网络在全局范围内,则工作节点上的非服务容器将能够连接到网络。

  • scope (str) -- 指定网络的范围 (localglobalswarm )

  • ingress (bool) -- 如果设置,则创建以群模式提供布线网格的入口网络。

返回:

创建的网络引用对象

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

使用网桥驱动程序的网络:

>>> client.api.create_network("network1", driver="bridge")

您还可以使用自定义IPAM配置创建更高级的网络。例如,将该子网设置为 192.168.52.0/24 和网关地址发送到 192.168.52.254

>>> ipam_pool = docker.types.IPAMPool(
    subnet='192.168.52.0/24',
    gateway='192.168.52.254'
)
>>> ipam_config = docker.types.IPAMConfig(
    pool_configs=[ipam_pool]
)
>>> client.api.create_network("network1", driver="bridge",
                                 ipam=ipam_config)
disconnect_container_from_network(container, net_id, force=False)

断开容器与网络的连接。

参数:
  • container (str) -- 要与网络断开连接的容器ID或名称

  • net_id (str) -- 网络ID

  • force (bool) -- 强制容器断开与网络的连接。默认: False

inspect_network(net_id, verbose=None, scope=None)

获取有关网络的详细信息。

参数:
  • net_id (str) -- 网络ID

  • verbose (bool) -- 以群模式显示整个群集的服务详细信息。

  • scope (str) -- 按作用域过滤网络 (swarmgloballocal )。

networks(names=None, ids=None, filters=None)

列出网络。类似于 docker network ls 指挥部。

参数:
  • names (list) -- 筛选依据的名称列表

  • ids (list) -- 要筛选的ID列表

  • filters (dict) -- 要在网络列表上处理的过滤器。可用过滤器:- driver=[<driver-name>] 匹配网络的驱动程序。- label=[<key>]label=[<key>=<value>] 或者一份这样的清单。- type=["custom"|"builtin"] 按类型过滤网络。

返回:

网络对象列表。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

prune_networks(filters=None)

删除未使用的网络

参数:

filters (dict) -- 要在清理列表上处理的筛选器。

返回:

包含已删除网络名称列表和回收的磁盘空间量(以字节为单位)的字典。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

remove_network(net_id)

删除网络。类似于 docker network rm 指挥部。

参数:

net_id (str) -- 网络的ID

class VolumeApiMixin
create_volume(name=None, driver=None, driver_opts=None, labels=None)

创建并注册命名卷

参数:
  • name (str) -- 卷的名称

  • driver (str) -- 用于创建卷的驱动程序的名称

  • driver_opts (dict) -- 作为键值字典的驱动程序选项

  • labels (dict) -- 要在卷上设置的标签

返回:

创建的卷引用对象

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> volume = client.api.create_volume(
...     name='foobar',
...     driver='local',
...     driver_opts={'foo': 'bar', 'baz': 'false'},
...     labels={"key": "value"},
... )
... print(volume)
{u'Driver': u'local',
u'Labels': {u'key': u'value'},
u'Mountpoint': u'/var/lib/docker/volumes/foobar/_data',
u'Name': u'foobar',
u'Scope': u'local'}
inspect_volume(name)

按名称检索卷信息。

参数:

name (str) -- 卷名

返回:

卷信息词典

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> client.api.inspect_volume('foobar')
{u'Driver': u'local',
 u'Mountpoint': u'/var/lib/docker/volumes/foobar/_data',
 u'Name': u'foobar'}
prune_volumes(filters=None)

删除未使用的卷

参数:

filters (dict) -- 要在清理列表上处理的筛选器。

返回:

包含已删除卷名的列表和回收的磁盘空间量(以字节为单位)的字典。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

remove_volume(name, force=False)

删除卷。类似于 docker volume rm 指挥部。

参数:
  • name (str) -- 卷的名称

  • force (bool) -- 强制删除已由卷驱动程序插件从带外删除的卷。

抛出:

docker.errors.APIError -- 如果无法删除卷。

volumes(filters=None)

列出停靠程序守护程序当前注册的卷。类似于 docker volume ls 指挥部。

参数:

filters (dict) -- 服务器端列表过滤选项。

返回:

将卷对象列表作为 Volumes 钥匙。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> client.api.volumes()
{u'Volumes': [{u'Driver': u'local',
   u'Mountpoint': u'/var/lib/docker/volumes/foobar/_data',
   u'Name': u'foobar'},
  {u'Driver': u'local',
   u'Mountpoint': u'/var/lib/docker/volumes/baz/_data',
   u'Name': u'baz'}]}

在容器中执行命令

class ExecApiMixin
exec_create(container, cmd, stdout=True, stderr=True, stdin=False, tty=False, privileged=False, user='', environment=None, workdir=None, detach_keys=None)

在运行的容器中设置EXEC实例。

参数:
  • container (str) -- 将在其中创建EXEC实例的目标容器

  • cmd (str or list) -- 要执行的命令

  • stdout (bool) -- 附加到标准输出。默认: True

  • stderr (bool) -- 附加到标准错误。默认: True

  • stdin (bool) -- 附加到标准输入。默认: False

  • tty (bool) -- 分配一个伪TTY。默认:FALSE

  • privileged (bool) -- 以特权身份运行。

  • user (str) -- 执行命令的用户身份。默认:根

  • environment (dict or list) -- 以下格式的词典或字符串列表 ["PASSWORD=xxx"]{"PASSWORD": "xxx"}

  • workdir (str) -- 此EXEC会话的工作目录的路径

  • detach_keys (str) -- 重写拆卸容器的键序列。格式为单字符 [a-Z] or ctrl-<value> where <value> is one of: a-z, @, ^, [, , or `_ `。默认使用~/.docker/config.json。

返回:

一本有高管的词典 Id 钥匙。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

exec_inspect(exec_id)

返回有关EXEC命令的低级别信息。

参数:

exec_id (str) -- EXEC实例的ID

返回:

终结点返回的值的字典。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

exec_resize(exec_id, height=None, width=None)

调整指定EXEC命令使用的tty会话的大小。

参数:
  • exec_id (str) -- EXEC实例的ID

  • height (int) -- TTY会话高度

  • width (int) -- TTY会话宽度

exec_start(exec_id, detach=False, tty=False, stream=False, socket=False, demux=False)

启动先前设置的EXEC实例。

参数:
  • exec_id (str) -- EXEC实例的ID

  • detach (bool) -- 如果为True,则从EXEC命令断开连接。默认:FALSE

  • tty (bool) -- 分配一个伪TTY。默认:FALSE

  • stream (bool) -- 以字符串迭代器的形式逐步返回响应数据,而不是单个字符串。

  • socket (bool) -- 返回连接套接字以允许自定义读/写操作。完成后必须由调用者关闭。

  • demux (bool) -- 分别返回stdout和stderr

返回:

如果 stream=True ,一个产生响应块的生成器。如果 socket=True ,连接的Socket对象。否则,包含响应数据的字符串。如果 demux=True ,包含两个byte类型的元素的元组:stdout和stderr。

返回类型:

(generator or str or tuple)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

Swarms

class SwarmApiMixin
create_swarm_spec(*args, **kwargs)

创建 docker.types.SwarmSpec 实例,它可以用作 swarm_spec 中的论点 init_swarm()

参数:
  • task_history_retention_limit (int) -- 存储的任务历史记录的最大数量。

  • snapshot_interval (int) -- 快照之间的日志条目数。

  • keep_old_snapshots (int) -- 要保留的超过当前快照的快照数。

  • log_entries_for_slow_followers (int) -- 创建快照后为同步慢关注者而保留的日志条目数。

  • heartbeat_tick (int) -- 每次心跳之间的滴答量(秒)。

  • election_tick (int) -- 在没有领导人的情况下触发新选举所需的滴答量(秒)。

  • dispatcher_heartbeat_period (int) -- 代理向调度程序发送心跳的延迟。

  • node_cert_expiry (int) -- 节点证书自动过期。

  • external_cas (list) -- 用于将签名请求转发到外部证书颁发机构的配置。使用以下列表 docker.types.SwarmExternalCA

  • name (string) -- 斯沃姆的名字

  • labels (dict) -- 用户定义的键/值元数据。

  • signing_ca_cert (str) -- 所有群节点TLS叶证书的所需签名CA证书,采用PEM格式。

  • signing_ca_key (str) -- 所有群节点TLS叶证书的所需签名CA密钥,采用PEM格式。

  • ca_force_rotate (int) -- 一个整数,如果尚未指定任何签名CA证书和密钥,则其用途是强制Sarm生成新的签名CA证书和密钥。

  • autolock_managers (boolean) -- 如果设置了密钥,则生成密钥并使用它锁定存储在管理器上的数据。

  • log_driver (DriverConfig) -- 用于在业务流程管理器中创建的任务的默认日志驱动程序。

返回:

docker.types.SwarmSpec

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> spec = client.api.create_swarm_spec(
  snapshot_interval=5000, log_entries_for_slow_followers=1200
)
>>> client.api.init_swarm(
  advertise_addr='eth0', listen_addr='0.0.0.0:5000',
  force_new_cluster=False, swarm_spec=spec
)
get_unlock_key()

获取此群管理器的解锁密钥。

返回:

A dict 包含一个 UnlockKey 成员

init_swarm(advertise_addr=None, listen_addr='0.0.0.0:2377', force_new_cluster=False, swarm_spec=None, default_addr_pool=None, subnet_size=None, data_path_addr=None, data_path_port=None)

使用当前连接的引擎作为第一个节点初始化新的群。

参数:
  • advertise_addr (string) -- 通告给其他节点的外部可达地址。这可以是以下形式的地址/端口组合 192.168.1.1:4567 ,或后跟端口号的接口,如 eth0:4567 。如果省略端口号,则使用侦听地址中的端口号。如果 advertise_addr 未指定,则在可能的情况下将自动检测它。默认:无

  • listen_addr (string) -- 用于管理器间通信的侦听地址,以及确定用于VXLAN隧道端点(VTEP)的网络接口。这可以是以下形式的地址/端口组合 192.168.1.1:4567 ,或后跟端口号的接口,如 eth0:4567 。如果省略端口号,则使用默认的群组侦听端口。默认:‘0.0.0.0:2377’

  • force_new_cluster (bool) -- 强制创建新的蜂群,即使已经是其中的一部分。默认:FALSE

  • swarm_spec (dict) -- 新群的配置设置。使用 APIClient.create_swarm_spec 要生成有效配置,请执行以下操作。默认:无

  • default_addr_pool (list of strings) -- 默认地址池指定全局作用域网络的默认子网池。每个池都应指定为CIDR块,如‘10.0.0.0/8’。默认:无

  • subnet_size (int) -- SubnetSize指定从默认子网池创建的网络的子网大小。默认:无

  • data_path_addr (string) -- 用于数据路径流量的地址或接口。例如,192.168.1.1或接口,如eth0。

  • data_path_port (int) -- 用于数据路径流量的端口号。可接受的端口范围为1024%到49151。如果设置为 None 或0,则将使用默认端口4789。默认:无

返回:

创建的节点的ID。

返回类型:

(str)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

inspect_node(node_id)

检索有关群节点的低级别信息

参数:

node_id (string) -- 要检查的节点的ID。

返回:

包含有关此节点的数据的词典。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

inspect_swarm()

检索有关当前群的低级别信息。

返回:

一本包含有关蜂群数据的词典。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

join_swarm(remote_addrs, join_token, listen_addr='0.0.0.0:2377', advertise_addr=None, data_path_addr=None)

使此引擎加入已创建的群。

参数:
  • remote_addrs (list) -- 已加入群组的一个或多个管理器节点的地址。

  • join_token (string) -- 加入此群的秘密令牌。

  • listen_addr (string) -- 如果节点被提升为管理器,则用于管理器间通信的侦听地址,以及确定用于VXLAN隧道端点(VTEP)的网络接口。默认: '0.0.0.0:2377

  • advertise_addr (string) -- 通告给其他节点的外部可达地址。这可以是以下形式的地址/端口组合 192.168.1.1:4567 ,或后跟端口号的接口,如 eth0:4567 。如果省略端口号,则使用侦听地址中的端口号。如果未指定AdvertiseAddr,则将在可能的情况下自动检测它。默认: None

  • data_path_addr (string) -- 用于数据路径流量的地址或接口。例如,192.168.1.1或接口,如eth0。

返回:

True 如果请求通过的话。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

leave_swarm(force=False)

留下一群人。

参数:

force (bool) -- 即使此节点是管理器,也要离开群。默认: False

返回:

True 如果请求通过的话。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

nodes(filters=None)

列出群节点。

参数:

filters (dict) -- 要在节点列表上处理的筛选器。有效筛选器: idnamemembershiprole 。默认: None

返回:

包含有关每个群节点的数据的词典列表。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

remove_node(node_id, force=False)

从群中删除节点。

参数:
  • node_id (string) -- 要删除的节点的ID。

  • force (bool) -- 强制删除活动节点。默认: False

抛出:
  • docker.errors.NotFound -- 如果群中不存在引用的节点。

  • docker.errors.APIError -- 如果服务器返回错误。

返回:

True 如果请求成功,则返回。

unlock_swarm(key)

解锁一个锁定的蜂群。

参数:

key (string) -- 由提供的解锁密钥 get_unlock_key()

抛出:
  • docker.errors.InvalidArgument -- 如果键参数的格式不兼容

  • docker.errors.APIError -- 如果服务器返回错误。

返回:

True 如果请求成功,则返回。

示例

>>> key = client.api.get_unlock_key()
>>> client.unlock_swarm(key)
update_node(node_id, version, node_spec=None)

更新节点的配置

参数:
  • node_id (string) -- 要更新的节点的ID。

  • version (int) -- 正在更新的节点对象的版本号。这是避免写入冲突所必需的。

  • node_spec (dict) -- 要更新的配置设置。任何未提供的值都将被删除。默认: None

返回:

True 如果请求通过的话。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> node_spec = {'Availability': 'active',
             'Name': 'node-name',
             'Role': 'manager',
             'Labels': {'foo': 'bar'}
            }
>>> client.api.update_node(node_id='24ifsmvkjbyhk', version=8,
    node_spec=node_spec)
update_swarm(version, swarm_spec=None, rotate_worker_token=False, rotate_manager_token=False, rotate_manager_unlock_key=False)

更新群的配置

参数:
  • version (int) -- 正在更新的群对象的版本号。这是避免写入冲突所必需的。

  • swarm_spec (dict) -- 要更新的配置设置。使用 create_swarm_spec() 要生成有效配置,请执行以下操作。默认: None

  • rotate_worker_token (bool) -- 轮换工作进程加入令牌。默认: False

  • rotate_manager_token (bool) -- 轮换经理加入令牌。默认: False

  • rotate_manager_unlock_key (bool) -- 旋转管理器解锁密钥。默认: False

返回:

True 如果请求通过的话。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

服务

class ServiceApiMixin
create_service(task_template, name=None, labels=None, mode=None, update_config=None, networks=None, endpoint_config=None, endpoint_spec=None, rollback_config=None)

创建服务。

参数:
  • task_template (TaskTemplate) -- 指定要作为新服务的一部分启动的任务。

  • name (string) -- 服务的用户定义名称。可选的。

  • labels (dict) -- 与服务关联的标签映射。可选的。

  • mode (ServiceMode) -- 服务的计划模式(复制或全局)。默认为已复制。

  • update_config (UpdateConfig) -- 服务的更新策略规范。默认: None

  • rollback_config (RollbackConfig) -- 服务的回滚策略规范。默认: None

  • networks (list) -- 网络名称或ID列表或 NetworkAttachmentConfig 将服务附加到。默认: None

  • endpoint_spec (EndpointSpec) -- 可配置为访问和负载平衡服务的属性。默认: None

返回:

一本包含一个 ID 新创建的服务的密钥。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

inspect_service(service, insert_defaults=None)

返回有关服务的信息。

参数:
  • service (str) -- 服务名称或ID。

  • insert_defaults (boolean) -- 如果为True,则缺省值将合并到服务检查输出中。

返回:

服务的服务器端表示形式的词典,包括所有相关属性。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

inspect_task(task)

检索有关任务的信息。

参数:

task (str) -- 任务ID

返回:

有关任务的信息。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

remove_service(service)

停止并删除服务。

参数:

service (str) -- 服务名称或ID

返回:

True 如果成功了。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

service_logs(service, details=False, follow=False, stdout=False, stderr=False, since=0, timestamps=False, tail='all', is_tty=None)

获取服务的日志流。注意:此终结点仅适用于具有 json-filejournald 记录驱动程序。

参数:
  • service (str) -- 服务的ID或名称

  • details (bool) -- 显示提供给日志的额外详细信息。默认: False

  • follow (bool) -- 保持连接打开,以便在引擎发送日志时读取日志。默认: False

  • stdout (bool) -- 将日志从 stdout 。默认: False

  • stderr (bool) -- 将日志从 stderr 。默认: False

  • since (int) -- 日志起始点的Unix时间戳。默认:0

  • timestamps (bool) -- 将时间戳添加到每个日志行。

  • tail (string or int) -- 要返回的日志行数,从日志的当前末尾开始计算。指定一个整数或 'all' 以输出所有日志行。默认: all

  • is_tty (bool) -- 无论该服务是 ContainerSpec 启用TTY选项。如果省略,该方法将向引擎查询信息,从而导致额外的往返。

返回(生成器):服务的日志。

services(filters=None, status=None)

列出服务。

参数:
  • filters (dict) -- 要在节点列表上处理的筛选器。有效筛选器: idnamelabelmode 。默认: None

  • status (bool) -- 包括正在运行的任务和所需任务的服务任务计数。默认: None

返回:

包含有关每个服务的数据的词典列表。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

tasks(filters=None)

检索任务列表。

参数:

filters (dict) -- 要在任务列表上处理的筛选器的映射。有效筛选器: idnameservicenodelabeldesired-state

返回:

任务词典列表。

返回类型:

(list )

抛出:

docker.errors.APIError -- 如果服务器返回错误。

update_service(service, version, task_template=None, name=None, labels=None, mode=None, update_config=None, networks=None, endpoint_config=None, endpoint_spec=None, fetch_current_spec=False, rollback_config=None)

更新服务。

参数:
  • service (string) -- 服务标识符(其名称或服务ID)。

  • version (int) -- 正在更新的服务对象的版本号。这是避免写入冲突所必需的。

  • task_template (TaskTemplate) -- 指定要作为服务的一部分启动的更新任务。

  • name (string) -- 服务的新名称。可选的。

  • labels (dict) -- 与服务关联的标签映射。可选的。

  • mode (ServiceMode) -- 服务的计划模式(复制或全局)。默认为已复制。

  • update_config (UpdateConfig) -- 服务的更新策略规范。默认: None

  • rollback_config (RollbackConfig) -- 服务的回滚策略规范。默认: None

  • networks (list) -- 网络名称或ID列表或 NetworkAttachmentConfig 将服务附加到。默认: None

  • endpoint_spec (EndpointSpec) -- 可配置为访问和负载平衡服务的属性。默认: None

  • fetch_current_spec (boolean) -- 使用服务的当前规范中的未定义设置。默认: False

返回:

一本包含一个 Warnings 钥匙。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

插件

class PluginApiMixin
configure_plugin(name, options)

配置插件。

参数:
  • name (string) -- 插件的名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

  • options (dict) -- 选项的键-值映射

返回:

True 如果成功

create_plugin(name, plugin_data_dir, gzip=False)

创建一个新插件。

参数:
  • name (string) -- 插件的名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

  • plugin_data_dir (string) -- 插件数据目录的路径。插件数据目录必须包含 config.json 清单文件和 rootfs 目录。

  • gzip (bool) -- 使用gzip压缩上下文。默认:FALSE

返回:

True 如果成功

disable_plugin(name, force=False)

禁用已安装的插件。

参数:
  • name (string) -- 插件的名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

  • force (bool) -- 要启用强制查询参数,请执行以下操作。

返回:

True 如果成功

enable_plugin(name, timeout=0)

启用已安装的插件。

参数:
  • name (string) -- 插件的名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

  • timeout (int) -- 操作超时(秒)。默认:0

返回:

True 如果成功

inspect_plugin(name)

检索插件元数据。

参数:

name (string) -- 插件的名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

返回:

包含插件信息的词典

plugin_privileges(name)

检索要授予插件的权限列表。

参数:

name (string) -- 要检查的远程插件的名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

返回:

代表插件权限的词典列表

plugins()

检索已安装插件的列表。

返回:

词典列表,每个插件一个

pull_plugin(remote, privileges, name=None)

拉入并安装一个插件。安装该插件后,可以使用以下命令启用该插件 enable_plugin()

参数:
  • remote (string) -- 要安装的插件的远程引用。这个 :latest 标记是可选的,如果省略,则为默认标记。

  • privileges (list) -- 用户同意授予插件的权限列表。可以使用以下命令检索 plugin_privileges()

  • name (string) -- 已拉出插件的本地名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

返回:

将解码的API日志流传输的可迭代对象

push_plugin(name)

将插件推送到注册表。

参数:

name (string) -- 要上载的插件的名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

返回:

True 如果成功

remove_plugin(name, force=False)

删除已安装的插件。

参数:
  • name (string) -- 要删除的插件的名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

  • force (bool) -- 在删除之前禁用该插件。如果容器正在使用插件,这可能会导致问题。

返回:

True 如果成功

upgrade_plugin(name, remote, privileges)

升级已安装的插件。

参数:
  • name (string) -- 要升级的插件的名称。这个 :latest 标记是可选的,如果省略,则为默认标记。

  • remote (string) -- 要升级到的远程引用。这个 :latest 标记是可选的,如果省略,则为默认标记。

  • privileges (list) -- 用户同意授予插件的权限列表。可以使用以下命令检索 plugin_privileges()

返回:

将解码的API日志流传输的可迭代对象

秘密

class SecretApiMixin
create_secret(name, data, labels=None, driver=None)

创造一个秘密

参数:
  • name (string) -- 秘密的名称

  • data (bytes) -- 要存储的秘密数据

  • labels (dict) -- 要分配给秘密的标签映射

  • driver (DriverConfig) -- 自定义驱动程序配置。如果未指定,则默认为 internal 将使用驱动程序

返回(Dict):新创建的密钥的ID

inspect_secret(id)

检索秘密元数据

参数:

id (string) -- 要检查的密码的完整ID

返回(DICT):元数据词典

抛出:

docker.errors.NotFound -- 如果不存在具有该ID的秘密

remove_secret(id)

揭开秘密

参数:

id (string) -- 要删除的密码的完整ID

返回(布尔值):如果成功,则为True

抛出:

docker.errors.NotFound -- 如果不存在具有该ID的秘密

secrets(filters=None)

列出秘密

参数:
  • filters (list. Available) -- 要对秘密进行处理的过滤器图

  • filters -- names

Returns(List):秘密列表

Docker后台进程

class DaemonApiMixin
df()

获取数据使用情况信息。

返回:

代表不同资源类别及其各自数据使用情况的词典。

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

events(since=None, until=None, filters=None, decode=None)

从服务器获取实时事件。类似于 docker events 指挥部。

参数:
  • since (UTC datetime or int) -- 从此点获取事件

  • until (UTC datetime or int) -- 在此之前获取事件

  • filters (dict) -- 按事件时间、容器或图像过滤事件

  • decode (bool) -- 如果设置为TRUE,流将被动态解码为DICTS。默认情况下为False。

返回:

A docker.types.daemon.CancellableStream 发电机

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> for event in client.events(decode=True)
...   print(event)
{u'from': u'image/with:tag',
 u'id': u'container-id',
 u'status': u'start',
 u'time': 1423339459}
...

>>> events = client.events()
>>> for event in events:
...   print(event)
>>> # and cancel from another thread
>>> events.close()
info()

显示系统范围的信息。与 docker info 指挥部。

返回:

作为词典的信息

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

login(username, password=None, email=None, registry=None, reauth=False, dockercfg_path=None)

使用注册表进行身份验证。类似于 docker login 指挥部。

参数:
  • username (str) -- 注册表用户名

  • password (str) -- 明文密码

  • email (str) -- 注册表帐户的电子邮件

  • registry (str) -- 注册表的URL。例如。 https://index.docker.io/v1/

  • reauth (bool) -- 是否刷新Docker服务器上的现有身份验证。

  • dockercfg_path (str) -- 使用Docker配置文件的自定义路径(默认 $HOME/.docker/config.json 如果存在,则为 $HOME/.dockercfg )

返回:

来自登录请求的响应

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

ping()

检查服务器是否响应。如果它没有响应,则会引发异常。

返回:

(Bool)来自服务器的响应。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

version(api_version=True)

从服务器返回版本信息。类似于 docker version 指挥部。

返回:

服务器版本信息

返回类型:

(dict)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

配置类型

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) -- 要修改的内部解析器变量的列表(例如, debugndots: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) -- 重新启动的条件 (noneon-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) -- 回滚任务无法运行或在回滚期间停止运行时要执行的操作。可接受的值为 continuepauserollback 。默认: continue

  • monitor (int) -- 监视每个回滚任务是否失败的时间量,以纳秒为单位。

  • max_failure_ratio (float) -- 在调用失败操作之前回滚期间可能失败的任务的百分比,指定为介于0和1之间的浮点数。默认值:0

  • order (string) -- 指定展开回滚任务时的操作顺序。要么 start-firststop-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) -- 可以是其中之一 replicatedglobalreplicated-jobglobal-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) -- 更新任务无法运行或在更新过程中停止运行时要执行的操作。可接受的值为 continuepause ,以及 rollback 从API v1.28开始。默认: continue

  • monitor (int) -- 监视每个更新的任务是否失败的时间量,以纳秒为单位。

  • max_failure_ratio (float) -- 在调用失败操作之前的更新过程中可能失败的任务的百分比,指定为介于0和1之间的浮点数。默认值:0

  • order (string) -- 指定展开更新任务时的操作顺序。要么 start-firststop-first 都被接受了。