Docker之镜像

Docker Hub网站是docker的官方网站,里面有着大量的镜像来供大家下载

查找镜像 (search)

 这里以nginx为例,查出来的都是以下载量排序。

docker search nginx
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        13713               [OK]                
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1870                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   785                                     [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   128                                     
bitnami/nginx                      Bitnami nginx Docker Image                      90                                      [OK]
tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   89                                      [OK]
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   87                                      
alfg/nginx-rtmp                    NGINX, nginx-rtmp-module and FFmpeg from sou…   75                                      [OK]
nginxdemos/hello                   NGINX webserver that serves a simple page co…   60                                      [OK]
jlesage/nginx-proxy-manager        Docker container for Nginx Proxy Manager        53                                      [OK]

获取镜像(pull)

我们先来看一下pull的命令格式,其中NAME是镜像的名字,TAG是镜像的标签

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

这里可以登录Docker Hub官网去看一下,搜索一下nginx的镜像

这里可以看到每个镜像右边都带有下载镜像的命令,例如这个,一般来说,下载一个镜像都需要‘名字:标签’,毕竟这样更加稳定,下面会做说明

docker pull nginx:1.19.2

对于Docker镜像来说,如果不指定TAG,则会默认选择latest标签,这会下载
仓库中最新版本的镜像。

docker pull nginx

一般来说, 镜像的latest 标签意味着该镜像的内容会跟踪最新版本的变更而变化, 内容是不稳定的。因此,从稳定性上考虑,不要在生产环境中忽略镜像的标签信息或使用默认的latest 标记的镜像。

查看镜像信息

1.列出镜像(image)

docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               1.19.2              4bb46517cac3        3 weeks ago         133MB

or

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               1.19.2              4bb46517cac3        3 weeks ago         133MB

docker image ls 等同于 docker images

REPOSITORY:来自哪个仓库
TAG:该镜像的标签
IMAGE ID:镜像的ID(唯一标识),若镜像ID相同,则实际上指向了一个同一个镜像,只不过具有不同的标签而已
CREATED:镜像最后更新时间
SIZE:镜像大小

在需要使用镜像ID的命令里,一般可以使用ID的前几个来代表整个ID。

images的几个常用子命令

docker images -a 列出所以镜像文件,包括临时文件
docker images -q 仅输出镜像ID

2.镜像添加标签(tag)
使用docker tag来给本地镜像添加一个新的标签

docker tag nginx:1.19.2 newnginx:newtar
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
newnginx            newtar              4bb46517cac3        3 weeks ago         133MB
nginx               1.19.2              4bb46517cac3        3 weeks ago         133MB

这样就可以用newnginx:newtar来表示这个镜像,在这里我们可以看到newnginx:newtar的镜像ID和nginx:1.19.2的镜像ID相同,他们实际上是指向的同一个镜像,只是别名不同。

3.查看镜像信息(inspect)
命令格式:

docker inspect [OPTIONS] NAME|ID [NAME|ID...]
docker inspect nginx:1.19.2
[
    {
        "Id": "sha256:4bb46517cac397bdb0bab6eba09b0e1f8e90ddd17cf99662997c3253531136f8",
        "RepoTags": [
            "newnginx:newtar",
            "nginx:1.19.2"
        ],
        "RepoDigests": [
            "nginx@sha256:b0ad43f7ee5edbc0effbc14645ae7055e21bc1973aee5150745632a24a752661"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2020-08-14T00:36:48.610531148Z",
		·····

4.查看镜像历史(history)

docker history nginx:1.19.2
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
4bb46517cac3        3 weeks ago         /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  STOPSIGNAL SIGTERM           0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  EXPOSE 80                    0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr…   0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7…   1.04kB              
<missing>           3 weeks ago         /bin/sh -c #(nop) COPY file:1d0a4127e78a26c1…   1.96kB              
<missing>           3 weeks ago         /bin/sh -c #(nop) COPY file:e7e183879c35719c…   1.2kB               
<missing>           3 weeks ago         /bin/sh -c set -x     && addgroup --system -…   63.4MB              
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV PKG_RELEASE=1~buster     0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NJS_VERSION=0.4.3        0B                  
<missing>           3 weeks ago         /bin/sh -c #(nop)  ENV NGINX_VERSION=1.19.2     0B                  
<missing>           5 weeks ago         /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B                  
<missing>           5 weeks ago         /bin/sh -c #(nop)  CMD ["bash"]                 0B                  
<missing>           5 weeks ago         /bin/sh -c #(nop) ADD file:3af3091e7d2bb40bc…   69.2MB

过长的命令将会自动截断,使用 –np-trunc来输出完整命令,有需要的可以自己体验下

删除镜像

1.通过标签来删除镜像
命令格式:

docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS支持选项:
-f, -force: 强制删除镜像, 即使有容器依赖它;
-no-prune: 不要清理未带标签的父镜像。
其中,IMAGE可以为标签或者ID

2.通过镜像ID来删除
当使用 docker rmi 命令, 并且后面跟上镜像的 ID (也可以是能进行区分的部分 ID 串前缀)时, 会先尝试删除所有指向该镜像的标签, 然后删除该镜像文件本身。

注意,当有该镜像创建的容器存在时,默认是无法删除该镜像的。通常并不推荐使用-f参数来强制删除一个存在容器依赖的镜像。 正确的做法是,先删除依赖该镜像的所有容器, 再来删除镜像。

3.清理镜像(prune)
使用Docker一段时间后, 系统中可能会遗留一些临时的镜像文件, 以及一些没有被使用的镜像, 可以通过docker image prune命令来进行清理。
命令格式:

docker image prune [OPTIONS]

OPTIONS支持选项:
-a, --all: 删除所有无用镜像, 不光是临时镜像;
–filter filter: 只清理符合给定过滤器的镜像;
-f, --force: 强制删除镜像, 而不进行提示确认。

[root@localhost ~]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
本帖子也是纯手工制作,转载请标明出处-----------burukku(づ。◕ᴗᴗ◕。)づ
原文地址:https://www.cnblogs.com/yuan9910/p/13784487.html