A volume can be associated to containers or storage pools.
* A container can have many volumes and containers are mapped to volumes the mount link on a container.
* A storage pool owns many volumes. The volume is only available to containers deployed on hosts that are part of the storage pool. When a volume is being created, you do not directly associate it to a storage pool. You will only need to specify a driver and during allocation, Rancher will resolve it to a storage pool.
| Field | Type | Create | Update | Default | Notes |
|---|---|---|---|---|---|
| description | string | Optional | Yes | - | |
| driver | string | Optional | - | - | |
| driverOpts | map[string] | Optional | Yes | - | |
| hostId | host | Optional | Yes | - | The unique identifier for the associated host |
| name | string | Yes | - | - | |
| sizeMb | int | Optional | - | - | |
| stackId | stack | Optional | - | - | |
| storageDriverId | storageDriver | Optional | - | - | |
| volumeTemplateId | volumeTemplate | Optional | - | - |
| Field | Type | Notes |
|---|---|---|
| accessMode | string | |
| externalId | string | |
| id | int | The unique identifier for the volume |
| imageId | image | |
| instanceId | instance | The unique identifier for the associated instance |
| isHostPath | boolean | |
| mounts | array[mountEntry] | |
| uri | string |
Please read more about the common resource fields. These fields are read only and applicable to almost every resource. We have segregated them from the list above.
CreatePOST: /v2-beta/projects/${PROJECT_ID}/volumes
curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"description": "string",
"driver": "string",
"driverOpts": {
"key": "value-pairs"
},
"hostId": "reference[host]",
"name": "string",
"sizeMb": 0,
"stackId": "reference[stack]",
"storageDriverId": "reference[storageDriver]",
"volumeTemplateId": "reference[volumeTemplate]"
}' 'http://${RANCHER_URL}:8080/v2-beta/projects/${PROJECT_ID}/volumes'
DeleteDELETE: /v2-beta/projects/${PROJECT_ID}/volumes/${ID}
curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" \
-X DELETE \
'http://${RANCHER_URL}:8080/v2-beta/projects/${PROJECT_ID}/volumes/${ID}'
UpdatePUT: /v2-beta/projects/${PROJECT_ID}/volumes/${ID}
curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" \
-X PUT \
-H 'Content-Type: application/json' \
-d '{
"description": "string",
"driverOpts": {
"key": "value-pairs"
},
"hostId": "reference[host]"
}' 'http://${RANCHER_URL}:8080/v2-beta/projects/${PROJECT_ID}/volumes/${ID}'
restorefrombackup
POST: /v2-beta/projects/${PROJECT_ID}/volumes/${ID}?action=restorefrombackup
Input: RestoreFromBackupInput
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| backupId | backup | Yes |
curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"backupId": "reference[backup]"
}' 'http://${RANCHER_URL}:8080/v2-beta/projects/${PROJECT_ID}/volumes/${ID}?action=restorefrombackup'
Output: An updated copy of the volume resource
reverttosnapshot
POST: /v2-beta/projects/${PROJECT_ID}/volumes/${ID}?action=reverttosnapshot
Input: RevertToSnapshotInput
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| snapshotId | snapshot | Yes |
curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"snapshotId": "reference[snapshot]"
}' 'http://${RANCHER_URL}:8080/v2-beta/projects/${PROJECT_ID}/volumes/${ID}?action=reverttosnapshot'
Output: An updated copy of the volume resource
snapshot
POST: /v2-beta/projects/${PROJECT_ID}/volumes/${ID}?action=snapshot
Input: VolumeSnapshotInput
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
| name | No |
curl -u "${RANCHER_ACCESS_KEY}:${RANCHER_SECRET_KEY}" \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"name": "string"
}' 'http://${RANCHER_URL}:8080/v2-beta/projects/${PROJECT_ID}/volumes/${ID}?action=snapshot'
Output: An updated copy of the snapshot resource