Docker Operations

Manager Docker containers, volumes and networks. These operations allow you to manage Docker from the view of the current inventory host. See the @docker Connector to use Docker containers as inventory directly.

Facts used in these operations: docker.DockerContainer, docker.DockerNetwork, docker.DockerPlugin, docker.DockerVolume.

docker.container

Manage Docker containers

docker.container(
    container: str, image: str="", ports: list[str] | None=None,
    networks: list[str] | None=None, volumes: list[str] | None=None,
    env_vars: list[str] | None=None, pull_always: bool=False, present: bool=True,
    force: bool=False, start: bool=True, **kwargs,
)

container**: name to identify the container image**: container image and tag ex: nginx:alpine networks**: network list to attach on container ports**: port list to expose volumes**: volume list to map on container env_vars**: environment variable list to inject on container pull_always**: force image pull force**: remove a container with same name and create a new one present**: whether the container should be up and running start**: start or stop the container

amples:**

ode:: python

# Run a container docker.container(

name=”Deploy Nginx container”, container=”nginx”, image=”nginx:alpine”, ports=[“80:80”], present=True, force=True, networks=[“proxy”, “services”], volumes=[“nginx_data:/usr/share/nginx/html”], pull_always=True,

)

# Stop a container docker.container(

name=”Stop Nginx container”, container=”nginx”, start=False,

)

# Start a container docker.container(

name=”Start Nginx container”, container=”nginx”, start=True,

) Note:

This operation also inherits all global arguments.

docker.image

Stateless operation

This operation will always execute commands and is not idempotent.

Manage Docker images

docker.image(image, present=True, **kwargs)

image**: Image and tag ex: nginx:alpine present**: whether the Docker image should exist

amples:**

ode:: python

# Pull a Docker image docker.image(

name=”Pull nginx image”, image=”nginx:alpine”, present=True,

)

# Remove a Docker image docker.image(

name=”Remove nginx image”, image:”nginx:image”, present=False,

) Note:

This operation also inherits all global arguments.

docker.network

Manage docker networks

docker.network(
    network: str, driver: str="", gateway: str="", ip_range: str="", ipam_driver: str="",
    subnet: str="", scope: str="", aux_addresses: dict[str, str] | None=None,
    opts: list[str] | None=None, ipam_opts: list[str] | None=None,
    labels: list[str] | None=None, ingress: bool=False, attachable: bool=False,
    present: bool=True, **kwargs,
)

network**: Network name driver**: Network driver ex: bridge or overlay gateway**: IPv4 or IPv6 Gateway for the master subnet ip_range**: Allocate container ip from a sub-range ipam_driver**: IP Address Management Driver subnet**: Subnet in CIDR format that represents a network segment scope**: Control the network’s scope aux_addresses**: named aux addresses for the network opts**: Set driver specific options ipam_opts**: Set IPAM driver specific options labels**: Label list to attach in the network ingress**: Create swarm routing-mesh network attachable**: Enable manual container attachment present**: whether the Docker network should exist

amples:**

ode:: python

# Create Docker network docker.network(

network=”nginx”, attachable=True, present=True,

) Note:

This operation also inherits all global arguments.

docker.plugin

Manage Docker plugins

docker.plugin(
    plugin: str, alias: str | None=None, present: bool=True, enabled: bool=True,
    plugin_options: dict[str, str] | None=None, **kwargs,
)

plugin**: Plugin name alias**: Alias for the plugin (optional) present**: Whether the plugin should be installed enabled**: Whether the plugin should be enabled plugin_options**: Options to pass to the plugin

amples:**

ode:: python

# Install and enable a Docker plugin docker.plugin(

name=”Install and enable a Docker plugin”, plugin=”username/my-awesome-plugin:latest”, alias=”my-plugin”, present=True, enabled=True, plugin_options={“option1”: “value1”, “option2”: “value2”},

) Note:

This operation also inherits all global arguments.

docker.prune

Stateless operation

This operation will always execute commands and is not idempotent.

Execute a docker system prune.

docker.prune(all: bool=False, volumes: bool=False, filter: str="", **kwargs)

all**: Remove all unused images not just dangling ones volumes**: Prune anonymous volumes filter**: Provide filter values (e.g. “label=<key>=<value>” or “until=24h”)

amples:**

ode:: python

# Remove dangling images docker.prune(

name=”remove dangling images”,

)

# Remove all images and volumes docker.prune(

name=”Remove all images and volumes”, all=True, volumes=True,

)

# Remove images older than 90 days docker.prune(

name=”Remove unused older than 90 days”, filter=”until=2160h”

) Note:

This operation also inherits all global arguments.

docker.volume

Manage Docker volumes

docker.volume(volume: str, driver: str="", labels: list[str] | None=None, present: bool=True, **kwargs)

volume**: Volume name driver**: Docker volume storage driver labels**: Label list to attach in the volume present**: whether the Docker volume should exist

amples:**

ode:: python

# Create a Docker volume docker.volume(

name=”Create nginx volume”, volume=”nginx_data”, present=True

) Note:

This operation also inherits all global arguments.