Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Finsys/dockhand/llms.txt
Use this file to discover all available pages before exploring further.
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
