Client & Connection Management
Connecting to Docker Engine
The docker-py
SDK provides several ways to connect to the Docker Engine, catering to different use cases and environments.
1. Default Connection:
- Default Endpoint:
unix:///var/run/docker.sock
- Purpose: This is the standard way to connect to the Docker Engine when running it locally on the same host.
- Code Example:
import docker
client = docker.from_env()
- Source: docker/client.py
2. Explicit Connection:
- Purpose: When you need to explicitly define the connection details.
- Example:
import docker
client = docker.Docker(base_url='tcp://192.168.99.100:2376')
- Source: docker/client.py
3. TLS Connection:
- Purpose: When you need to connect to the Docker Engine securely using TLS/SSL.
- Example:
import docker
client = docker.Docker(
base_url='tcp://192.168.99.100:2376',
tls=True,
tls_verify=True,
tls_ca_cert='path/to/ca.pem',
tls_client_cert='path/to/client.pem',
tls_client_key='path/to/client.key'
)
- Source: docker/client.py
4. Authentication
- Purpose: To authenticate with the Docker Engine for secure access.
- Options:
- Default: The
docker-py
SDK uses thedocker
daemon’s configuration for authentication. - Environment Variables: Set
DOCKER_HOST
,DOCKER_CERT_PATH
,DOCKER_TLS_VERIFY
, etc. - Authentication Config: You can use the
auth_config
parameter to provide authentication credentials directly:
import docker client = docker.Docker( base_url='tcp://192.168.99.100:2376', auth_config={ 'username': 'myuser', 'password': 'mypassword' } )
- Default: The
- Source: docker/client.py
- Source: docker/auth.py
Client Context
The docker-py
SDK offers a flexible way to manage multiple Docker connections using the client context. This is particularly useful for applications that need to interact with different Docker Engines or use multiple authentication methods.
Example:
import docker from docker.context import Context # Create a new context for a remote Docker Engine remote_context = Context(base_url='tcp://192.168.99.100:2376') # Create a new context with custom authentication auth_context = Context( base_url='tcp://192.168.99.100:2376', auth_config={ 'username': 'myuser', 'password': 'mypassword' } ) # Access Docker clients using the contexts remote_client = remote_context.client auth_client = auth_context.client # ... Perform operations on the remote and authenticated Docker Engines ...
Source: docker/context.py
Source: docker/client.py
Connection Management
The docker-py
SDK provides features to manage connections to the Docker Engine, ensuring efficient resource utilization:
Automatic Connection Management: The SDK automatically establishes and closes connections when necessary, minimizing resource overhead.
Connection Pooling: The SDK employs connection pooling for efficient resource reuse and performance optimization.
Custom Connection Management: You can customize the connection management behavior by using advanced features like specifying a maximum number of connections or setting connection timeouts.
Source: docker/client.py
Troubleshooting
For debugging connection issues, use the docker-py
logging features:
Set logging level: Configure logging using
logging.basicConfig
ordocker.utils.config.logger.setLevel(level)
to control the log verbosity.Inspect logs: Review the
docker-py
logs for debugging information related to connection attempts, errors, or other relevant details.Source: docker/utils/config.py
Note: The docker-py
SDK relies on the requests
library for network communication. You might need to refer to the requests
documentation for additional troubleshooting guidance.