docker镜像管理

https://www.hyouit.com?aff=418

一、下载镜像

命令格式:docker pull NAME[:TAG],其中docker pull固定语法,NAME[:TAG]中NAME是镜像名称,TAG是可选项,默认是latest标签,常用来表示镜像版本信息。例如下载Ubuntu 18.04系统基础镜像,不指定下载镜像仓库地址,默认为docker.io/library/ubuntu:18.04

[root@localhost ~]# docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
fb668870d8a7: Pull complete 
Digest: sha256:daf3e62183e8aa9a56878a685ed26f3af3dd8c08c8fd11ef1c167a1aa9bd66a3
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04
二、查看镜像信息

2.1、通过docker images命令查看系统中下载的所有镜像基本信息

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       18.04     251b86c83674   2 weeks ago   63.1MB

镜像大小信息只是表示了该镜像的逻辑体积大小,实际上由于相同的镜像层本地只会存储一份,物理上占用的存储空间会小于各镜像逻辑体积之和。

2.2 使用docker tag命令自定义镜像标签

[root@localhost ~]# docker tag ubuntu:18.04 myubuntu:lastst
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
myubuntu     lastst    251b86c83674   2 weeks ago   63.1MB
ubuntu       18.04     251b86c83674   2 weeks ago   63.1MB

可以看到自定义标签的镜像和之前的镜像的ID是一致的,它们实际上指向了同一个镜像文件,只是别名不同而已。docker tag命令添加的标签实际上起到了类似链接的作用。

2.3 使用docker inspect命令查看镜像详细信息

[root@localhost ~]# docker inspect ubuntu:18.04
[
    {
        "Id": "sha256:251b86c83674d45abbf5736ae35654fca6145e9aaaf14ede3350605eadec41ae",
        "RepoTags": [
            "myubuntu:lastst",
            "ubuntu:18.04"
        ],
        ...... 中间信息省略
        "Metadata": {
            "LastTagTime": "2022-12-29T21:55:46.556721185+08:00"
        }
    }
]

2.4 通过docker history命令查看镜像层信息

[root@localhost ~]# docker history ubuntu:18.04
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
251b86c83674   2 weeks ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B        
<missing>      2 weeks ago   /bin/sh -c #(nop) ADD file:3c88cea17de40599d…   63.1MB    
三、搜索镜像

使用docker search命令搜索仓库中的镜像

3.1 搜索仓库中带有nginx字样的镜像

[root@localhost ~]# docker search --filter=is-official=true nginx
NAME      DESCRIPTION                STARS     OFFICIAL   AUTOMATED
nginx     Official build of Nginx.   17872     [OK]       

3.2 搜索所有收藏数超过4的关键词包括tensorflow的镜像:

[root@localhost ~]# docker search --filter=stars=4 tensorflow
NAME                                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tensorflow/tensorflow                     Official Docker images for the machine learn…   2087                 
jupyter/tensorflow-notebook               Scientific Jupyter Notebook Python Stack w/ …   324                  
tensorflow/serving                        Official images for TensorFlow Serving (http…   130                  
bitnami/tensorflow-serving                Bitnami Docker Image for TensorFlow Serving     30                   [OK]
armswdev/tensorflow-arm-neoverse-n1       Please use "armswdev/tensorflow-arm-neoverse"   11                   
armswdev/tensorflow-arm-neoverse          TensorFlow builds for AArch64 CPUs              11                   
intel/intel-optimized-tensorflow          Containers with TensorFlow* optimized with o…   9                    
intel/intel-optimized-tensorflow-avx512   Containers with TensorFlow* optimized with o…   5                    
四、删除和清理镜像

使用docker rmi删除镜像,当有容器正在使用即将被删除的镜像时,可通过-f选项强制删除,但不建议这样做,先停止删除其依赖的容器,再删除镜像。

4.1 通过镜像标签删除镜像

[root@localhost ~]# docker rmi myubuntu:lastst
Untagged: myubuntu:lastst

4.2 通过镜像ID删除镜像

[root@localhost ~]# docker rmi 251b86c83674
Untagged: ubuntu:18.04
Untagged: ubuntu@sha256:daf3e62183e8aa9a56878a685ed26f3af3dd8c08c8fd11ef1c167a1aa9bd66a3
Deleted: sha256:251b86c83674d45abbf5736ae35654fca6145e9aaaf14ede3350605eadec41ae
Deleted: sha256:45bbe3d22998589317c7f6c4dd591475423bb37ca9b922529c5878653483b18d

使用docker image prune命令清理遗留一些临时的镜像文件,以及一些没有被使用的镜像。

4.3 清理所有临时镜像文件

[root@localhost ~]# docker image prune -f
Total reclaimed space: 0B
五、创建镜像

创建镜像的方法主要有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。

5.1 使用docker commit命令,基于已有镜像的容器创建

5.1.1 先运行并进入一个容器,创建一个文件

[root@localhost ~]# docker run -it ubuntu:18.04 /bin/bash
root@545d88bec01e:/# touch test.txt
root@545d88bec01e:/# exit

5.1.2 使用docker commit命令创建镜像

root@localhost ~]# docker commit -m "add a new file" -a "author test" 545d88bec01e test:v1
sha256:121f1f8fc609dc9d1de9f6c3cb007af927ef761af7448cea262950a414909c57
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
test         v1        121f1f8fc609   6 seconds ago    63.1MB
ubuntu       18.04     251b86c83674   2 weeks ago      63.1MB

5.1.3 使用刚创建的镜像运行容器,验证

[root@localhost ~]# docker run -it test:v1 /bin/bash
root@db973277b9d6:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  test.txt  tmp  usr  var

5.2 基于本地模板导入,不常使用
5.3 基于Dockerfile创建,Dockerfile单独记录说明

posted @   原来是你~~~  阅读(186)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示