Ansible

- name: Create Docker network
  hosts: all
  tasks:
    - name: Create custom network
      community.docker.docker_network:
        name: my_network
        state: present
- name: Push Docker Image
  hosts: all
  tasks:
    - name: Push image to Docker Hub
      community.docker.docker_image:
        name: my_dockerhub_user/my_app
        push: yes
        source: local
        repository: my_dockerhub_user/my_app
- name: Build Docker Image
  hosts: all
  tasks:
    - name: Build an image from a Dockerfile
      community.docker.docker_image:
        name: my_app
        tag: latest
        build:
          path: /path/to/dockerfile
- name: Pull Docker Image
  hosts: all
  tasks:
    - name: Pull Nginx image
      community.docker.docker_image:
        name: nginx
        source: pull
- name: Stop and remove a Docker container
  hosts: all
  tasks:
    - name: Stop container
      community.docker.docker_container:
        name: nginx_server
        state: stopped

    - name: Remove container
      community.docker.docker_container:
        name: nginx_server
        state: absent
Example playbook to run an Nginx container:
- name: Run Nginx container
  hosts: all
  tasks:
    - name: Start a Docker container
      community.docker.docker_container:
        name: nginx_server
        image: nginx:latest
        state: started
        ports:
          - "80:80"
Run it with:
ansible-playbook -i inventory.ini deploy_nginx.yml
Run the following command on the Ansible control node:
ansible-galaxy collection install community.docker
Create a playbook to install Docker on a remote machine:
- name: Install Docker
  hosts: all
  tasks:
    - name: Install dependencies
      apt:
        name: ['apt-transport-https', 'ca-certificates', 'curl', 'software-properties-common']
        state: present

    - name: Add Docker GPG key
      shell: curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

    - name: Add Docker repository
      shell: add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

    - name: Install Docker
      apt:
        name: docker-ce
        state: present
Run it with:
ansible-playbook -i inventory.ini install_docker.yml
No. The control node doesn’t need Docker, but managed nodes should have Docker installed if you want to manage containers.
Ansible simplifies Docker container management by automating:
  • Container deployment
  • Image building
  • Networking and volume management
  • Container orchestration