# docker pull

<!---MARKER_GEN_START-->
Download an image from a registry

### Aliases

`docker image pull`, `docker pull`

### Options

| Name               | Type     | Default | Description                                      |
|:-------------------|:---------|:--------|:-------------------------------------------------|
| `-a`, `--all-tags` | `bool`   |         | Download all tagged images in the repository     |
| `--platform`       | `string` |         | Set platform if server is multi-platform capable |
| `-q`, `--quiet`    | `bool`   |         | Suppress verbose output                          |


<!---MARKER_GEN_END-->

