update image/list.md

pull/474/head
Dorsey.Xu 2020-11-04 18:03:35 +08:00
parent cba52767b7
commit aa431b9a79
2 changed files with 29 additions and 29 deletions

View File

@ -1,6 +1,6 @@
##
## List all Images
使 `docker image ls`
If you want to list all the images downloaded, you can use the command `docker image ls` or `docker images`.
```bash
$ docker image ls
@ -13,17 +13,17 @@ ubuntu 18.04 f753707788c5 4 weeks ago
ubuntu latest f753707788c5 4 weeks ago 127 MB
```
`仓库名``标签``镜像 ID``创建时间` `所占用的空间`
You can see `Repository`, `Tag`, `Image ID`, `Created` and `Size` from the list.
** ID** **** `ubuntu:18.04` `ubuntu:latest` ID
Among these, the repository name and tag have been introduced in the basic concepts chapter. **Image ID** is the unique identifier for the image, and an image can correspond to multiple **labels**. In the exmaple above, we can see `ubuntu:18:04` and `ubuntu:latest` having the same ID, since they are aliases for the same image.
###
### Image Size
Docker Hub `ubuntu:18.04` `127 MB` [Docker Hub](https://hub.docker.com/r/library/ubuntu/tags/) 显示的却是 `50 MB`。这是因为 Docker Hub 中显示的体积是压缩后的体积。在镜像下载和上传过程中镜像是保持着压缩状态的,因此 Docker Hub 所显示的大小是网络传输中更关心的流量大小。而 `docker image ls` 显示的是镜像下载到本地后,展开的大小,准确说,是展开后的各层所占空间的总和,因为镜像到本地后,查看空间的时候,更关心的是本地磁盘空间占用的大小。
If you pay close attention to all of these. You may find that the disk space they occupy is different from the one at Docker Hub. For example, `ubuntu:18.04` is `127MB` here, but on [Docker Hub](https://hub.docker.com/r/library/ubuntu/tags/), `50MB` is displayed. That's because what is shown on Docker Hub is the size after compression. During image download and upload, the image is compressed, because the data transfer is the main factor taken into consideration. However, when we use the command `docker image ls`, that's the size after expansion. To be more precisely, the total size after expanding all the layers locally, because we care more about local space occupied when an image is on our disk.
`docker image ls` Docker 使 Docker 使 Union FS
One more thing to note is that in the `docker image ls` list, the total size of images is far less than the actual size. Since the Docker imags are stored in multiple layers, and there are inheritance and reuse, there might be different images using the same basic images and sharing some common layers. As we have mentioned, Docker uses Union FS, we only keep one copy for the same layers, so the actual space occupied is far less than the mere sum.
便
You can use the following command to see the space utilized by images, containers, data volumes.
```bash
$ docker system df
@ -35,15 +35,15 @@ Local Volumes 9 0 652.2MB
Build Cache 0B 0B
```
###
### Dangling Image
`<none>`
In the image list above, we can see a special image, the one without repository name nor tag, all being `<none>`:
```bash
<none> <none> 00285df0df87 5 days ago 342 MB
```
`mongo:3.2` `docker pull mongo:3.2` `mongo:3.2` `<none>` `docker pull` `docker build` `<none>` **(dangling image)**
This image is originally with name and tag(`mongo:3.2`). As the official image being maintained, and the release of new versions, when we execute `docker pull mongo:3.2`, the tag `mongo:3.2` is transferred to the new iamge, and the name on the old image is canceled, end up being `<none>`. Besides, `docker pull`, `docker build` might also cause this phenomemon. Because the new and old image are of the same name, the name of the old image is canceled, thus causing the repository and tag both being `<none>`. These images without tags are also called **dangling images**, we can use the following commands to show them:
```bash
$ docker image ls -f dangling=true
@ -51,27 +51,27 @@ REPOSITORY TAG IMAGE ID CREATED
<none> <none> 00285df0df87 5 days ago 342 MB
```
Generally speaking, the dangling images are useless, we can remove them with the following commands with ease:
```bash
$ docker image prune
```
###
### Intermediate Layer Images
Docker ****使 `docker image ls` `-a`
To accelerate the build of images and improve the resource utilization, Docker uses **Intermediate Layer Images**. So after using Docker for a while, you may see a list of intermediate images as dependencies. The default `docker image ls` only shows the top images, if you want to show all the images including intermediate images, you need to add the `-a` paramter.
```bash
$ docker image ls -a
```
You will see a lot of images without tags with this command. Differing from `dangling images`, these untagged images are intermediate layer images, and are what a lot of other images depend on. These untagged images should not be deleted, otherwise, it will cause missing dependencies errors for upstream images. In fact, these images are not necessary to delete, as we have mentioned, the same layers will be only stored once. These images are dependencies for other images, and their existence will not cause any redundancy, you will need them in any way. They will disappear the moment you delete all the images that reference them.
###
### List Images Partially
`docker image ls` `docker image ls`
Without any parameter, `docker image ls` lists all the top-level images, but sometimes we only want them partially. `docker image ls` has several parameters to help us achieve this goal.
To list images based on repository name.
```bash
$ docker image ls ubuntu
@ -80,7 +80,7 @@ ubuntu 18.04 f753707788c5 4 weeks ago
ubuntu latest f753707788c5 4 weeks ago 127 MB
```
To list a certain image, specifying repository name and label.
```bash
$ docker image ls ubuntu:18.04
@ -88,7 +88,7 @@ REPOSITORY TAG IMAGE ID CREATED
ubuntu 18.04 f753707788c5 4 weeks ago 127 MB
```
`docker image ls` `--filter` `-f`使 `mongo:3.2`
Besides, `docker image ls` supports the `--filter` parameter, or simply `-f`. As we have seen before, using filter to list dangling image, and it has more usages. For example, if we want to see images with edition after `mongo:3.2`, we can use the following command:
```bash
$ docker image ls -f since=mongo:3.2
@ -97,18 +97,18 @@ redis latest 5f515359c7f8 5 days ago
nginx latest 05a60462f8ba 5 days ago 181 MB
```
`since` `before`
If we want to see some versions of images before, we can simply replace `since` with `before`.
`LABEL` `LABEL`
If we have defined the `LABEL` during the image build, we can also filter with the `LABEL` option.
```bash
$ docker image ls -f label=com.example.version=0.1
...
```
###
### Show with Specified Format
`docker image ls` `docker image ls` ID `docker image rm` `-q`
By default, `docker image ls` will show a full list, but we do not need it all the time. For example, when we delete dangling images, we use `docker image ls` to list all the IDs of dangling images and then pass them over to `docker image rm` as parameters to remove the specified images. Under this circumstance, we can apply the `-q` option.
```bash
$ docker image ls -q
@ -121,11 +121,11 @@ f753707788c5
1e0c3dd64ccd
```
`--filter` `-q` ID `docker` Docker 使
`--filter` together with `-q` to generate a ID list in a specified range, and then passing them over to another `docker` command as parameter is a common practice for Docker commands. Not only for images, we will see all this kind of combinations in other kinds of commands, with them, we can achieve great functionalities. So when you see some filters while reading the documents, please pay attention to how they are used in practice.
便 [Go ](https://gohugo.io/templates/go-templates/)。
In some other occasions, we may not be content with the table structure and would like to reorganize the columns. In this case, we can use the [Go Templates](https://gohugo.io/templates/go-templates/).
ID
For example, using the following commands will list the image results, with only image ID and repository names.
```bash
$ docker image ls --format "{{.ID}}: {{.Repository}}"
@ -138,7 +138,7 @@ f753707788c5: ubuntu
1e0c3dd64ccd: ubuntu
```
Or we may want to show the table with equal horizontal tabulations and with title, we can define them by ourselves.
```bash
$ docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

View File

@ -1,6 +1,6 @@
## Install Docker CE on Ubuntu
> warning: Don't install Docker CE directly using apt without configuring Docker APT source.
> WARNING: DO NOT install Docker CE directly using apt without configuring Docker APT source.
### Prerequisites