Catalog PyPI
Back to packageRELEASE DETAILS

0.27.0

PyPI

aiodocker

A simple Docker HTTP API wrapper written with asyncio and aiohttp.

Published27 May 2026
Direct dependencies18
Transitive dependenciesNot calculated

README

Version 0.27.0 documentation
==============================
AsyncIO bindings for docker.io
==============================

.. image:: https://badge.fury.io/py/aiodocker.svg
   :target: https://badge.fury.io/py/aiodocker
   :alt: PyPI version

.. image:: https://img.shields.io/pypi/pyversions/aiodocker.svg
   :target: https://pypi.org/project/aiodocker/
   :alt: Python Versions

.. image:: https://github.com/aio-libs/aiodocker/actions/workflows/ci-cd.yml/badge.svg?branch=main
   :target: https://github.com/aio-libs/aiodocker/actions/workflows/ci-cd.yml?query=branch%3Amain
   :alt: GitHub Actions status for the main branch

.. image:: https://codecov.io/gh/aio-libs/aiodocker/branch/main/graph/badge.svg
   :target: https://codecov.io/gh/aio-libs/aiodocker
   :alt: Code Coverage

.. image:: https://badges.gitter.im/Join%20Chat.svg
    :target: https://gitter.im/aio-libs/Lobby
    :alt: Chat on Gitter


A simple Docker HTTP API wrapper written with asyncio and aiohttp.


Installation
============

.. code-block:: sh

   pip install aiodocker


Development
===========

The recommended developer setup uses `uv <https://docs.astral.sh/uv/>`_, which
manages the virtualenv and resolves dependencies from the committed
``uv.lock`` so every contributor and CI job builds against the same versions.

.. code-block:: sh

   # Install uv first: https://docs.astral.sh/uv/getting-started/installation/
   uv sync --extra dev --extra lint --extra test --extra doc
   uv run pre-commit install

The ``Makefile`` helpers (``make develop``, ``make install``, ``make lint``,
``make test``) all assume uv.

Using pip instead (fallback)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If you can't install uv, you can still bootstrap with pip. The resulting
environment isn't pinned to ``uv.lock``, so versions may drift from CI.

.. code-block:: sh

   python -m venv .venv && source .venv/bin/activate
   pip install -U pip
   pip install -e '.[dev,lint,test,doc]'  # in zsh, you need to escape brackets
   pre-commit install

Running tests
~~~~~~~~~~~~~

.. code-block:: sh

   # Run all tests
   make test

   # Run individual tests
   uv run pytest tests/test_images.py


Building packages
~~~~~~~~~~~~~~~~~

NOTE: Usually you don't need to run this step by yourself.

.. code-block:: sh

   uv build


Documentation
=============

http://aiodocker.readthedocs.io


Examples
========

.. code-block:: python

    import asyncio
    import aiodocker

    async def list_things(docker):
        print('== Images ==')
        for image in (await docker.images.list()):
            tags = image['RepoTags'][0] if image['RepoTags'] else ''
            print(image['Id'], tags)
        print('== Containers ==')
        for container in (await docker.containers.list()):
            print(f" {container._id}")

    async def run_container(docker):
        print('== Running a hello-world container ==')
        container = await docker.containers.create_or_replace(
            config={
                'Cmd': ['/bin/ash', '-c', 'echo "hello world"'],
                'Image': 'alpine:latest',
            },
            name='testing',
        )
        await container.start()
        logs = await container.log(stdout=True)
        print(''.join(logs))
        await container.delete(force=True)

    async def main():
        docker = aiodocker.Docker()
        await list_things(docker)
        await run_container(docker)
        await docker.close()

    if __name__ == "__main__":
        asyncio.run(main())

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 21

Native requirements
18 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
aiohttp
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
aiohttp<4.0,>=3.11.13runtime
aiohttp
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
aiohttp==3.13.5; extra == "dev"runtime
towncrier
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
towncrier==25.8.0; extra == "dev"runtime
alabaster
Environment
{
  "extras": "",
  "marker": "extra == \"doc\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
alabaster==1.0.0; extra == "doc"runtime
sphinx
Environment
{
  "extras": "",
  "marker": "extra == \"doc\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
sphinx==8.1.3; extra == "doc"runtime
mypy
Environment
{
  "extras": "",
  "marker": "extra == \"lint\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
mypy==1.20.2; extra == "lint"runtime
pre-commit
Environment
{
  "extras": "",
  "marker": "extra == \"lint\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
pre-commit>=3.5.0; extra == "lint"runtime
ruff
Environment
{
  "extras": "",
  "marker": "extra == \"lint\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
ruff==0.15.11; extra == "lint"runtime
types-paramiko
Environment
{
  "extras": "",
  "marker": "extra == \"lint\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
types-paramiko; extra == "lint"runtime
asyncssh
Environment
{
  "extras": "",
  "marker": "extra == \"ssh\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
asyncssh>=2.14.0; extra == "ssh"runtime
paramiko
Environment
{
  "extras": "",
  "marker": "extra == \"ssh\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
paramiko>=2.9.0; extra == "ssh"runtime
async-timeout
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
async-timeout~=5.0.1; extra == "test"runtime
asyncssh
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
asyncssh>=2.14.0; extra == "test"runtime
codecov
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
codecov==2.1.13; extra == "test"runtime
packaging
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
packaging==26.1; extra == "test"runtime
paramiko
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
paramiko>=2.9.0; extra == "test"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio==1.3.0; extra == "test"runtime
pytest-cov
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
pytest-cov==7.1.0; extra == "test"runtime
pytest-sugar
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
pytest-sugar==1.1.1; extra == "test"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
pytest==9.0.3; extra == "test"runtime
testcontainers
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10.0",
  "evaluation": "NOT_EVALUATED"
}
testcontainers==4.14.2; extra == "test"runtime

Distribution files

2 collected
aiodocker-0.27.0-py3-none-any.whl

bdist_wheel · 53.75 KB · Python py3

Source file
aiodocker-0.27.0.tar.gz

sdist · 320.51 KB · Python source

Source file

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 11:49 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:9d305f6b57fcfe3fb8d75d0bdd5372d6b0bc7eb8361e139417e7e4a9aedbae34

Other collected versions

View all collected versions →