Table of Contents


Link toDocker in OMV 8

(Docker) Compose Plugin For OMV8

(Docker) Compose Plugin For OMV8

(Docker) Compose Plugin For OMV8



Summary

Go to -> Docker compose Docker is a technology that enables the creation and use of Linux containers. A container is an isolated environment where one or more applications and their dependencies run using the same operating system kernel.

Docker allows applications to be installed, removed, modified, and updated without directly affecting the base system.

The openmediavault-compose plugin provides an interface in the OpenMediaVault GUI to create and manage containers using docker compose.

With this plugin:


Docker in OMV - Initial Setup

Go to -> Docker in OMV 8
This document assumes that Docker and the required dependencies are already installed and properly configured.

The document Docker in OMV 8 describes the recommended method to install and configure Docker on OpenMediaVault.

It is strongly recommended to read and follow that document before installing or using the openmediavault-compose plugin.

Go to → Docker in OMV 8


Prerequisites


Installation

The installation and initial configuration of Docker and the openmediavault-compose plugin are covered in the document Docker in OMV 8 and will not be repeated here.

  Warning
The openmediavault-sharerootfs plugin is a dependency of openmediavault-compose.

Do not uninstall the openmediavault-sharerootfs plugin while openmediavault-compose is installed.
Removing it will cause the openmediavault-compose plugin to be automatically uninstalled.


Settings Tab



Under Services > Compose > Settings

Settings
This tab contains the general configuration options of the openmediavault-compose plugin.

From here, you can define the folders used by the plugin, configure backup behavior, and manage Docker-related settings.

Go to → Services > Compose > Settings

Changes made in this tab are applied using the Save button.

Compose Files

Define the folder where the plugin will store container configuration files, including Docker Compose files (.yaml) and environment files (.env).


Data

Define a shared folder used as a global data path.


Backup

Configure the plugin's schedulable backup system.


Docker

Configure Docker-specific settings used by the plugin.

Docker Storage

  Note
NVIDIA Containers

If using NVIDIA drivers inside containers (e.g., Plex or Jellyfin hardware transcoding), leave this field empty.
Changing the storage path in this case can corrupt the NVIDIA configuration during OMV reconfiguration.

Log File Max Size
Live Restore

Overrides

Adjust plugin behavior for advanced use or debugging.


Cache Times for Tabs

Configure caching behavior of the plugin’s GUI to improve performance.


Action Buttons (Bottom Bar)

From left to right:


Files Tab

The Files tab is the compose file management interface of the openmediavault-compose plugin.

From this tab you can create, edit, delete and manage Docker Compose configuration files (.yaml) and environment files (.env) used to deploy and control containers.

All files created or imported here are stored in subfolders inside the shared folder defined in Settings → Compose Files.

Actions performed in this tab apply to all containers defined in the selected compose file.

Under Services > Compose > Files

Files


Overview


Creation and import (+)

The + button groups all actions related to creating or importing compose files.


Add

create Creates a new Docker Compose file from scratch.


Add from example

Add from example Create compose files from predefined examples included with the plugin.

  Note
One of the available examples creates a Composerize container, which can generate compose files from Docker CLI container commands.


Add from URL

Create a compose configuration by downloading a file from a remote URL.

Only trusted sources should be used.


Autocompose

Generate compose files from existing containers that were created outside the plugin.

Use this feature only when necessary. The generated files are usually larger and less clean than manually written compose files.

Useful when the original compose configuration has been lost.


Import

Import existing compose configurations into the plugin.


Import one

Imports a single Docker Compose file. Useful when testing or migrating an individual compose file without importing a full directory.


Sync changes from file

Reloads the compose file from disk and synchronizes external changes with the plugin state. This is useful when the file has been modified outside the GUI (for example via CLI, git pull or an external editor).


File management

Edit

Edit the .yaml and .env files of the selected configuration.

The editor window is identical to the Create dialog.


Delete

Delete the selected compose configuration.


Validation and status

Check

Validate the syntax of the selected compose file.

Recommended before starting containers.


Ps

Displays the current status of containers associated with the selected compose file.


Container lifecycle

Up

Start all containers defined in the selected compose file.


Stop

Stop all containers defined in the selected compose file.

Useful for troubleshooting or inspecting container output.


Down

Stop and remove all containers defined in the selected compose file.


Pull

Download the latest available images for the selected compose file.


Global environment variables

Edit global environment file

Define global environment variables available to all compose files.

Example variable definition:

MYPUID=1000

Usage inside a compose file:

- PUID=${MYPUID}

Docker will substitute the value when the container starts:

- PUID=1000

These variables are available to all compose files managed by the plugin.


Cleanup (Prune)

The Prune button groups several cleanup actions into a submenu.


System

Performs all prune actions at once.


Container

Removes stopped containers.


Image

Removes unused container images.


Network

Removes unused Docker networks.


Volume

Removes unused Docker volumes.


Tools

The Tools menu provides advanced utilities for logs, deployment and configuration management.

Logs

Displays container logs.


Follow logs

Shows container logs in real time.


Download logs

Downloads container logs to a file.


Build

Builds images defined in the compose file.


Pull and build

Pulls images and then builds them.


Up and remove orphans

Starts containers and removes orphan containers not defined in the compose file.


Down and remove orphans

Stops containers and removes orphan containers.


Down all

Stops and removes all containers managed by the plugin, regardless of compose file. This is an advanced operation and should be used with caution.


Init git repo

Initializes a git repository in the compose files directory.


Show file changes

Shows changes made to compose files compared to the git repository state.


Show global.env changes

Shows changes made to the global environment file.


Docs

The Docs menu provides quick access to documentation.

Docker compose

Opens this documentation.


Docker in OMV

Open the Docker in OMV document on this wiki.


Configs Tab

Go to -> Docker configs The Configs tab allows you to manage Docker configs used by compose files.

Docker configs are external configuration files managed by Docker and mounted into containers at runtime. They are typically used to provide application configuration files (for example: nginx.conf, app.conf, config.json) without embedding them directly inside the compose file.

This tab is intended for advanced users and is optional for most container deployments.

Under Services > Compose > Configs

Configs


Overview


Creation and import (+)

The “+” button groups all actions related to creating or importing Docker configs.


Add

Creates a new Docker config file.

The dialog contains the following fields:


Import

Imports an existing configuration file as a Docker config.

Useful when migrating from an existing setup or when the configuration file already exists on disk.


Management

Edit

Edit the contents of the selected config file.


Delete

Delete the selected config file.


Show config changes

Displays changes made to config files.

This is particularly useful when working with git integration or when tracking manual edits to configuration files.


Usage in compose files

Docker configs managed in this tab can be referenced inside compose files using the standard Docker Compose syntax.

This allows configuration files to be mounted into containers at runtime without hardcoding their contents directly in the compose file.

This functionality is recommended only for users familiar with Docker Compose and container configuration management.


Services Tab

The Services tab displays services generated by Docker containers managed by the openmediavault-compose plugin.

Each entry represents a service exposed by a container, typically corresponding to an application or web interface.

The Ports column shows clickable links that allow direct access to the web interface provided by each service.

Selecting a service enables the action buttons in the top toolbar.

Under Services > Compose > Services

Services


Overview


Pull

Downloads the latest available image for the container associated with the selected service.

This does not restart or recreate the container automatically.


Up

Recreates and starts the service using the currently available image.

Typically used after pulling a newer image.


Stop

Stops the container providing the selected service.


Down

Stops and removes the container providing the selected service.

The container can later be recreated using the Up action.


Restart

Restarts the container providing the selected service without removing it.

Useful for applying configuration changes that do not require container recreation.


Inspect

Displays detailed Docker inspection information for the container providing the selected service.

Includes configuration, mounts, network settings and runtime status.


Logs

Displays the log output of the selected service up to the moment the action is executed.


Follow Logs

Displays the log output of the selected service in real time.

New log entries will continue to appear as they are generated.


Download Log

Downloads the log output of the selected service to a file.

Useful for offline analysis or for sharing logs when requesting support.


Notes


Stats Tab

The Stats tab displays a list of running containers along with real-time information about resource usage.

This includes CPU, memory, network and disk I/O statistics provided by Docker.

Selecting a container enables the action buttons in the top toolbar.

Under Services > Compose > Stats

Stats


Overview


Inspect

Displays detailed information about the selected container using Docker inspect.

Includes configuration, mounts, network settings, environment variables and runtime state.

Activated when selecting a container.


Logs

Displays the log output of the selected container up to the moment the action is executed.

Activated when selecting a container.


Follow Logs

Displays the log output of the selected container in real time.

New log entries will continue to appear as they are generated.

Activated when selecting a container.


Restart

Restarts the selected container.

Useful to quickly apply changes or recover from temporary issues without recreating the container.

Activated when selecting a container.


Download Logs

Downloads the log output of the selected container to a file.

Useful for offline analysis or when attaching logs to a support request.

Activated when selecting a container.


Notes


Images Tab

Shows existing images on the system and allows you to manage them.

Selecting an image activates the action buttons on the top bar.

Under Services > Compose > Images

Images


Delete

Deletes the selected image if it is not currently in use. If the image is in use, an error is returned and the image is not removed.


Inspect

Displays detailed information about the selected image.


Pull image

Downloads the latest version of the selected image from the configured repository.


Pull image + tag

Downloads a specific tagged version of the selected image from the repository.


Tag

Assigns a new tag to the selected image. Useful for versioning or preparing to push the image to a repository.


Push

Uploads the selected image to a remote Docker repository using its assigned tag.


Prune images

Cleans up unused images from the system. Removes images that are not currently used by any container to free disk space.


Networks Tab

Shows existing networks on the system and allows you to manage them.

Selecting a network activates the action buttons on the top bar.

Under Services > Compose > Networks

Networks


Create

Opens a dialog to create a custom network interface.

Comma separate multiple entries (e.g., `my-router=192.168.10.5,my-nas=192.168.20.6`).


Delete

Deletes the selected network interface.


Inspect

Displays detailed information about the selected network interface.


Volumes Tab

Shows existing volumes on the system and allows you to manage them.

Selecting a volume activates the action buttons on the top bar.

Under Services > Compose > Volumes

Volumes


Delete

Deletes the selected volume.


Inspect

Displays detailed information about the selected volume.


Containers Tab

Shows a list of running containers displaying basic execution data.

Selecting a container activates the action buttons on the top bar.

Actions in this tab apply only to the selected container, even if the yaml file defines multiple containers.

The Ports column provides links to access the GUI of each container via its port and the server’s domain. Ensure your router/DNS system allows proper resolution of these domain names.

Under Services > Compose > Containers

Containers


Restart

Restarts the selected container.

Activated when selecting a container.


Inspect

Displays detailed information about the selected container.

Activated when selecting a container.


Logs

Displays the logs of the selected container up to this point.

Activated when selecting a container.


Follow logs

Shows continuous logs of the selected container in real time.

Activated when selecting a container.


Download log

Downloads the log file of the selected container to the local system.

Activated when selecting a container.


Dockerfiles Tab

This is the Dockerfiles management tab for creating container images.

From this tab you can create, edit, delete, build, and manage Dockerfiles.

All files generated here are stored in subfolders inside the shared folder defined in Settings → Compose Files.

Selecting a Dockerfile activates the action buttons on the top bar.

Under Services > Compose > Dockerfiles

Dockerfiles


Create

Create Dockerfile Creates a new Dockerfile to generate a container image.


Edit

Allows editing the selected Dockerfile, script, and conf files.

Activated when selecting a Dockerfile.


Delete

Deletes the selected Dockerfile.

Also removes the corresponding subfolder and all related files.

Activated when selecting a Dockerfile.


Build

Builds the image using the selected Dockerfile.

Activated when selecting a Dockerfile.


Pull and build

Builds the image like Build, but always pulls the base image from the internet even if it exists locally.

Activated when selecting a Dockerfile.


Tag

Allows tagging the selected image with a custom name.

Activated when selecting a Dockerfile.


Schedule Tab (Updates and Backups)

This tab manages the utility that allows you to perform plugin backups and/or container image updates. It displays a list of scheduled jobs.

Under Services > Compose > Schedule

Schedule

Backup By default, backups include all subfolders containing generated compose files. These subfolders are created automatically every time a compose file is generated via the GUI.

Additionally, volumes defined in each container that are smaller than 1GB will be included in the backup. This threshold can be customized in the Settings Tab.

You can manually include or exclude volumes:

Backup process:

Update process:

  Note
The advantage of the plugin's backup utility is that it stops containers before performing the backup, ensuring consistency. Afterward, you can use any specialized backup solution for versioning, deduplication, etc. Running backups while containers are active may produce inconsistent results.


Create

Schedule Opens a dialog to schedule container backup and/or update jobs.

Settings

Action Type

Defines the type of action performed by the scheduled job.


Maintenance options

(Available when Maintenance is selected)


Scripts

Allows execution of custom scripts before and/or after the maintenance task.


Schedule

Defines when and how the task is executed.


At the bottom of the dialog:


Container state options

(Available when Container state is selected as the Action Type)

This mode allows you to schedule automatic start or stop actions for containers defined in compose files.

Unlike maintenance tasks, this mode does not perform backups, updates, or image operations. It only controls the execution state of containers.


Available actions

Filter behavior

The Filter field in the Settings section applies exactly the same way as in maintenance mode.


Typical use cases

Notes

Edit

Opens the edit dialog for the selected scheduled task.


Delete

Deletes the selected scheduled task.


Run

Executes the selected task immediately. Email notifications are not sent in this mode.


Restore Tab

This tab allows you to restore backups previously created by the plugin backup utility.

Backups listed here are those generated from the Schedule tab and stored in the configured backup folder.

Selecting a backup activates the action buttons.

Under Services > Compose > Restore

Restore


Restore

Restores the selected backup.

The restore process performs the following actions:


Restore global.env

Restores only the global environment variables file (global.env) from the selected backup.

This option is useful when:

No containers are stopped or restarted when using this option.


Delete

Deletes the selected backup from disk.

This action is permanent and cannot be undone.

  Warning
Restoring a backup will overwrite existing compose files and data.
Make sure current configurations are no longer needed or have been backed up separately before proceeding.


Repos Tab

This tab allows you to manage access to container image repositories.

The buttons available are:

  Note
The authentication status affects the ability to pull or push images from/to private repositories.


Dashboard

The dashboard provides several widgets that display the current status of Docker and running containers.

These widgets are informational only and do not allow direct interaction.


Services Grid

Shows the global Docker service status.

This widget provides a quick visual confirmation of Docker availability.


Services Table

Displays Docker service status in table format.

This widget offers the same information as the grid view but in a more compact, list-based format.


Container Table

Shows a list of currently running containers.

For each running container, the following information is displayed:

Stopped containers are not displayed in this table.

This widget allows quick monitoring of active containers without entering the Compose interface.



Usual procedures


How to implement a container using a yaml file



How to update a single docker-compose container



How to update multiple containers defined in a single docker-compose yaml file



How to delete containers from a yaml file



How to deploy a container using a dockerfile



How to generate a composition yaml file with Autocompose



How to Create a VLAN (Pi-hole, Adguard, ...)


This is useful if you need a container to have an IP within your LAN that is different from your server's.

The most common use case for this procedure is installing pi-hole in docker on an OMV server. The reason in this case is that both pi-hole and OMV need the same port to function correctly, port 53. Therefore we need pi-hole to use a different IP on our network to be able to use that port without affecting OMV. There may be other use cases besides pi-hole, depending on the needs of the container you're setting up.

Note that containers using this network will expose all their ports on the LAN, just like any other IP, eg OMV. Docker provides an additional layer of security through port mapping (similar to a firewall). Through this procedure we lose that additional security layer. This does not have to be a problem, it is normal operation in any network, but it is convenient to be aware of this circumstance. Logically it will be useless to map ports in those containers, so you can save that part.


Creation and use of the VLAN network interface with IP in our LAN

We must create the network previously to be able to define the parameters we need and use it later in the containers. We will call it mynet and we will create it as follows:


Assigning this network interface in a container

In order for a container to use the created network interface you need to add the following lines to the end of your compose file, assuming docker-compose is version 3 or higher. See the documentation for older versions of docker-compose.

services:
  pi-hole:
    container_name: "pi-hole"
    .
    .
    networks:
      mynet:
        ipv4_address: 192.168.1.241
networks:
  mynet:
    external: true

This sets up the mynet interface for that container and assigns it the IP value 192.168.1.241 within our network, which was the first available. We will still be able to use up to 246 in other containers.

When we start the container we will be able to access its interface from the assigned IP and the usual port.


Reduce the IP range of the DHCP server (usually the router)

Once the above is done, in order to avoid overlapping assignable IP ranges, it would be advisable to reduce the IP range of the network's DHCP server. In the case of the previous configuration it could be set to:

This way addresses from 192.168.1.240 onwards will always be available, since the router will not assign any of these IPs if a device requests an IP assignment.

If you use the container itself as a DHCP server, for example with pi-hole, you must disable the DHCP server on your router and adapt the DHCP range in pi-hole accordingly.


If we need communication between the containers and the host

What has been applied so far is enough to use pihole, but in the case of other different containers it may be necessary for the container and the host to communicate with each other. Vlans have a limitation, by design they cannot communicate with the host. To overcome this setback and allow communication between the containers and the host, if necessary, we can create a network interface that will act as a bridge between the two.

  Warning
What follows from now on is a procedure that creates a binding interface for communication with the host via /etc/network/interfaces when OMV uses netplan. This can generate some conflict in certain circumstances. Do it at your own risk.
If you have a suggestion to do this in a safe way you can post it in the forum.

Running the following commands would create this interface, but this configuration would not be persistent in OMV. On the first server restart it would disappear:

ip link add mynet-host link eno1 type macvlan mode bridge
ip addr add 192.168.1.239/32 dev mynet-host
ip link set mynet-host up
ip route add 192.168.1.224/28 dev mynet-host

This would create a macvlan network interface called mynet-host in bridge mode that would use the IP 192.168.1.239. The host would use this network interface thanks to the static route set in the 192.168.1.224/28 network range to communicate with the containers.

To make this configuration persistent in OMV we must do it as follows:

nano /etc/network/interfaces.d/99-mynet-host

auto mynet-host
iface mynet-host inet static
    pre-up ip link add mynet-host link eno1 type macvlan mode bridge
    address 192.168.1.239/32
    up ip link set mynet-host up
    up ip route add 192.168.1.224/28 dev mynet-host

From now on those settings will be set every time the server is started.

  Note
If for some reason you need to create many different IPs keep in mind that macvlan uses different MAC addresses for each IP. This can be a problem if your hardware has a limit on the maximum number of MACs for the same physical interface. In that case you can change the configuration to ipvlan. Consult the official docker documentation in this regard to solve other possible configuration problems with ipvlan.


Source Code

openmediavault-compose


A Closing Note

We, who support the openmediavault project, hope you’ve found this guide to be useful and that you’ll find your openmediavault server to be efficient, easy to use, and enjoyable.

If you found this plugin guide to be helpful, please consider a modest donation to support the hosting costs of this server.

OMV-Extras.org



Venmo: ryecoaaron