Docker SDK Python: Manage Docker Containers with Python

Online Python Trainer for Beginners

Learn Python easily without overwhelming theory. Solve practical tasks with automatic checking, get hints in Russian, and write code directly in your browser — no installation required.

Start Course

Introduction to Docker SDK for Python

Containerization is a cornerstone of modern DevOps infrastructure. Docker has become the de facto standard for isolating applications and managing environments. However, when you need more flexible, programmable control over containers, the Docker SDK for Python — commonly known as docker-py — comes into play.

This library lets you interact directly with the Docker daemon through Python code, managing containers, images, networks, volumes, and everything you'd normally do from the CLI. That's why docker-py is widely used in CI/CD pipelines, automation, testing, and dynamic orchestration control.

What is Docker SDK for Python

Docker SDK for Python is the official Python library that provides a high-level interface for interacting with the Docker Engine API. It allows developers to integrate Docker functionality directly into Python applications, automating deployment and container management processes.

Key Features of the Library

Docker SDK provides a complete set of tools for working with Docker:

  • Programmatic management of container lifecycles
  • Automated image building and deployment
  • Network and data storage configuration
  • Integration with monitoring and logging systems
  • Docker Swarm support for orchestration
  • Real-time Docker event handling

Installation and Initial Setup

Installing the Library

To install the Docker SDK, use the standard pip package manager:

pip install docker

To install with additional dependencies for SSH and TLS support:

pip install docker[ssh,tls]

Connecting to Docker Engine

Basic connection to a local Docker daemon:

import docker

# Auto-connect using environment variables
client = docker.from_env()

# Explicitly specify connection parameters
client = docker.DockerClient(base_url='unix://var/run/docker.sock')

# Connect to a remote Docker Engine
client = docker.DockerClient(base_url='tcp://192.168.1.100:2376')

Verifying the Connection

try:
    # Check Docker Engine availability
    print("Docker Engine is available:", client.ping())
    
    # Get system information
    info = client.info()
    print(f"Docker Version: {info['ServerVersion']}")
    print(f"Architecture: {info['Architecture']}")
    
except docker.errors.DockerException as e:
    print(f"Error connecting to Docker: {e}")

Library Architecture and Structure

Docker SDK for Python is built as a wrapper around the Docker Engine REST API, providing both high-level and low-level interfaces for interacting with Docker.

Module Structure

The library is organized into several main modules:

  • docker.DockerClient — the main client for high-level interaction
  • docker.APIClient — a low-level API client
  • docker.models — object-oriented models for working with resources
  • docker.types — helper data types
  • docker.errors — exceptions and error handling

Architectural Principles

The library follows the principles of the Docker Engine REST API:

  • Each resource (container, image, network) is represented by a separate object
  • Operations are performed through object methods
  • Asynchronous operation execution is supported
  • Automatic connection handling and reconnection

Managing Containers

Creating

Recommendations