Overview
The Volumes page provides comprehensive management of Docker volumes for persistent container data. It includes volume creation, file browsing, backup/restore operations, and cloning functionality to duplicate volume data.Key Features
Volume Management
- Named Volumes: Create and manage named volumes
- Driver Support: Local driver and third-party volume plugins
- Usage Tracking: See which containers are using each volume
- Stack Integration: Volumes linked to Docker Compose stacks
- Size Information: (If supported by driver)
Volume Operations
Create Volumes:- Specify volume name
- Select driver (local or plugin)
- Configure driver options
- Add labels for organization
- Inspect volume details (configuration, mount point)
- Browse volume files with web-based file manager
- Export volume data as TAR/TAR.GZ
- Clone volume to create duplicate with same data
- Remove volumes (with protection for in-use volumes)
- Select multiple volumes
- Bulk removal of unused volumes
- Prune unused volumes
File Browser
Browse Volume Contents:- Navigate directory structure
- View file metadata (size, permissions, modified date)
- Preview file contents
- Download individual files
- Upload files to volume
- Edit text files in-browser
- Create directories
- Delete files and folders
- Upload files via drag-and-drop or file picker
- Download files to local machine
- Edit text files with syntax highlighting
- Delete files with confirmation
- Rename files and directories
Backup and Restore
Export Volume:- Export entire volume as archive
- Format: TAR or TAR.GZ (configurable)
- Downloads directly to browser
- Preserves file permissions and metadata
- Create exact copy of volume
- Includes all files and directory structure
- Preserves permissions and ownership
- Uses temporary container for data transfer
- Progress tracking during clone operation
Filtering and Search
- Text Search: Filter by volume name or stack name
- Driver Filter: Multi-select for volume drivers
- Usage Filter: Show all, in-use, or unused volumes
- Persistent Filters: Saved to local storage
- Sortable Columns: Sort by name, driver, stack, created date
UI Features
Volume Table:- Expandable rows (if needed in future)
- Status indicators
- Container usage display
- Quick action buttons
- Highlight row on click
- Clickable container names
- Opens container inspect modal
- Shows all containers using the volume
- Displays mount path in container
How to Use
Creating a Volume
- Click the Create button
- Configure Volume:
- Enter unique volume name
- Select driver (default: local)
- Driver Options (optional):
- For local driver:
type: Type of mount (e.g., nfs, tmpfs)device: Device or remote patho: Mount options
- For plugin drivers: Plugin-specific options
- For local driver:
- Labels (optional):
- Add custom labels for organization
- Format:
key=value
- Click Create to create the volume
Browsing Volume Files
- Click the Folder icon on a volume row
- File Browser Opens:
- Shows directory tree
- Lists files with details
- Navigate Directories:
- Click folder names to enter
- Use breadcrumb to navigate up
- File Operations:
- Click file to preview (text files)
- Click download icon to save locally
- Click edit icon to modify text files
- Click delete icon to remove files
- Upload Files:
- Click “Upload” button
- Select files from file picker
- Or drag and drop files
- Close browser when done
Exporting a Volume
- Click the Download icon on a volume row
- Volume exports in background
- Archive downloads automatically
- Format based on global setting (TAR or TAR.GZ)
- Extract archive on local machine to restore data
Cloning a Volume
- Click the Clone icon (stamp icon) on a volume row
- Configure Clone:
- Enter name for new volume
- Original volume name shown for reference
- Click Clone to start
- Clone Process:
- Creates new empty volume
- Starts temporary container
- Mounts both volumes
- Copies all data
- Removes temporary container
- Progress bar shows status
- New volume appears in list when complete
Inspecting Volume Details
- Click the Eye icon on a volume row
- Volume Information:
- Volume name
- Driver
- Mount point on host
- Created timestamp
- Labels
- Options
- Scope
- Copy any value to clipboard
- View JSON representation
Removing Volumes
Single Volume:- Click the Remove icon
- Confirm deletion
- Volume is removed from Docker
- Note: In-use volumes cannot be removed
- Select volumes using checkboxes
- Click Delete in selection bar
- Confirm bulk deletion
- Unused volumes are removed
- Click Prune button
- Confirms removal of all unused volumes
- Volumes not mounted by any container are removed
UI Walkthrough
Header Section
- Title: “Volumes” with total count
- Search Bar: Filter by volume name or stack
- Driver Filter: Multi-select dropdown
- Usage Filter: All / In use / Unused
- Prune Button: Remove unused volumes
- Refresh: Manually refresh volume list
- Create Button: Open volume creation modal
Selection Bar
Appears when volumes are selected:- Number of selected volumes
- Clear: Deselect all volumes
- Delete: Remove selected volumes (only unused)
Volume Table
Columns:- Checkbox: Select for bulk operations
- Name: Volume name (monospace font)
- Driver: Driver type badge
- Scope: Local/global
- Stack: Compose project name (if applicable)
- Used By: Container names (clickable)
- Created: Timestamp
- Actions: Quick action buttons
- Eye: View volume details
- Folder: Browse files in volume
- Download: Export volume data
- Stamp: Clone volume
- Remove: Delete volume (only if unused)
File Browser Modal
Header:- Volume name
- Current path breadcrumb
- Upload button
- Close button
- Icon for type (folder/file)
- File name
- Size
- Modified date
- Permissions
- Actions (download, edit, delete)
- Click folders to enter
- Click breadcrumb to go up
- Back button
Volume Details Modal
Sections:-
Overview:
- Volume name
- Driver
- Scope
- Created timestamp
-
Mount Point:
- Host path (if local driver)
- Device (if network driver)
-
Driver Options:
- Key-value pairs
- Custom configuration
-
Labels:
- User labels
- System labels (stack, etc.)
-
Usage:
- Connected containers
- Mount paths in containers
Real Examples
Example: Database Volume
Example: NFS Volume
Example: Backup Volume
Example: Tmpfs Volume
Example: Clone Operation
Database Schema
Volumes are managed through the Docker API and don’t have persistent storage in Dockhand’s database, except for tracking usage relationships. Docker API Response includes:- Volume name
- Driver
- Mount point
- Created timestamp
- Labels
- Options
- Scope
- Mount information links volumes to containers
- Source volume name
- Destination path in container
- Read-only flag
Technical Details
Volume Drivers
Local Driver:- Default driver
- Stores data on Docker host
- Supports bind mounts, tmpfs, and NFS
- Configured via driver options
- Network-attached storage (NAS)
- Cloud storage (AWS EBS, Azure Disk)
- Distributed storage (GlusterFS, Ceph)
- Installed separately
File Browser Implementation
Backend:- Temporary container with volume mounted
- Uses BusyBox or Alpine image
- File operations via container exec
- Streams files for upload/download
- Tree view for directory navigation
- Lazy loading for large directories
- Monaco editor for file editing
- Drag-and-drop upload support
Clone Operation
Process:- Create destination volume
- Start ephemeral container:
- Mounts source volume (read-only)
- Mounts destination volume (read-write)
- Execute copy command:
cp -a /source/. /dest/ - Monitor progress (if supported)
- Remove container
- Verify destination volume
- Copy speed depends on data size and disk I/O
- Uses Docker host’s filesystem cache
- No network overhead (both volumes on same host)
Export Operation
Process:- Start temporary container with volume mounted
- Create TAR archive:
tar -czf /tmp/backup.tar.gz -C /data . - Stream archive to client
- Remove container
API Endpoints
GET /api/volumes- List all volumesPOST /api/volumes- Create volumeGET /api/volumes/:name- Get volume detailsDELETE /api/volumes/:name- Remove volumeGET /api/volumes/:name/browse- List files in volumeGET /api/volumes/:name/export- Export volume as archivePOST /api/volumes/:name/clone- Clone volumePOST /api/volumes/:name/upload- Upload file to volumeGET /api/volumes/:name/download- Download file from volumeDELETE /api/volumes/:name/files- Delete file in volumePOST /api/prune/volumes- Prune unused volumes
