Cloud Native 14 min read

Container Storage Plugins and Persistent Storage Architecture

This article explains how containers use storage plugins like Docker volume drivers and Convoy to integrate persistent storage, describes the plugin API, daemon architecture, backend driver abstractions, and discusses the trade‑offs of different storage types for cloud‑native applications.

High Availability Architecture
High Availability Architecture
High Availability Architecture
Container Storage Plugins and Persistent Storage Architecture

The article introduces the growing importance of containers as the standard deployment unit in cloud environments and raises three key questions for architects: how containers address persistent storage needs, challenges posed by container orchestration to storage systems, and whether container‑storage integration should follow a fused or separated architecture.

It then explains Docker's storage plugin model, where Docker defines a simple set of interfaces (Plugin.Activate, VolumeDriver.Create, VolumeDriver.Mount, VolumeDriver.Path, VolumeDriver.Unmount, VolumeDriver.Remove, VolumeDriver.List, VolumeDriver.Get, VolumeDriver.Capabilities) that external storage systems implement, allowing containers to mount external volumes transparently.

Convoy, a Docker volume plugin, is examined in detail. The daemon process starts with a command such as convoy daemon --drivers glusterfs --driver-opts glusterfs.servers=192.168.0.3 --driver-opts glusterfs.defaultvolumepool=vol2 , parses arguments, initializes drivers from configuration files or command‑line options, registers routers for client and Docker requests, and launches an HTTP server on a Unix socket.

The daemon’s request handling logic routes HTTP calls to modules for volume, snapshot, and backup operations, each implemented via the ConvoyDriver interface. Up to version 0.4.3, Convoy supports four backend storage types (e.g., glusterfs, ceph, etc.), abstracted through Driver, Volume, Snapshot, and Device structures.

Objectstore provides a backup framework with implementations for S3 and VFS, offering DeltaBlockBackup and BackupFile strategies. Configuration files (e.g., volume.cfg, backup_*.cfg) store metadata, while block directories hold actual snapshot data.

In the discussion of containers, applications, and persistent storage, the author argues that containers themselves are stateless packaging mechanisms, while stateful needs arise from the applications inside them. For databases, containerization requires external persistent storage, illustrated with a MySQL example using shared virtual disks.

The article concludes with a comparison of open‑source distributed storage options (block: Ceph RBD, Sheepdog; file: GlusterFS, CephFS, HDFS; object: OpenStack Swift, Ceph RGW), recommending object storage for container workloads due to its URL‑based access model, and outlines why traditional storage struggles with the flexibility, automation, and granularity demanded by cloud‑native environments.

Cloud NativeDockerContainersPersistent StorageConvoystorage plugins
High Availability Architecture
Written by

High Availability Architecture

Official account for High Availability Architecture.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.