zoukankan      html  css  js  c++  java
  • 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(づ。◕ᴗᴗ◕。)づ
  • 相关阅读:
    导入测试用例的设计
    质量管理的精髓
    ios crash的原因与抓取crash日志的方法
    怎样实现excel隔行隔列变色效果的方法
    如何提高员工的质量意识?
    史上最全的测试团队组建方法
    如何写好缺陷报告?
    你还不知道?这四个因素决定了你的养老金待遇!
    各手机截屏方法收集
    利用drozer进行Android渗透测试
  • 原文地址:https://www.cnblogs.com/yuan9910/p/13784487.html
Copyright © 2011-2022 走看看