社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

Docker常用镜像管理命令

DevOps实战派 • 3 周前 • 42 次点击  
关注公众号,获取更多精彩内容
在容器的世界中,镜像是一切的基础。为了有效地管理和利用这些镜像,Docker提供了一系列强大的镜像管理命令。
本文将深入探讨这些命令,帮助你更好地使用容器镜像。

一. 搜索镜像

Docker默认会从Docker Hub的网站下载镜像,在下载之前我们可以使用docker search 命令搜索该站点上的镜像仓库,该命令会列出相关的仓库信息。

例如,要搜索所有与Nginx相关的镜像,可以运行以下命令:

$ docker search nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                             Official build of Nginx.                        16272     [OK]       
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2115                 [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   822                  [OK]
jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho…   324                  
......
注:NAME字段为镜像仓库名称,搜索结果会列出网站上包括Docker官方以及第三方的镜像仓库,其中第一个带nginx关键字的为官方仓库,其他第三方镜像仓库会在前面带上名称空间信息;DESCRIPTION为仓库的描述;STARS可以理解为镜像的受欢迎程度,一般优先选择START多的镜像;OFFICIAL表示该镜像是否为官方镜像;AUTOMATED代表为自动构建;

命令支持以下选项:

-f, --filter filter :根据条件过滤输出内容;

--format string :格式化输出内容;

--limit int :限制显示结果数量,默认为25个;

--no-trunc:显示完整信息;

例如:只搜索官方的Nginx镜像,可以使用--filter 进行过滤。
$ docker search --filter=is-official=true nginx
NAME      DESCRIPTION                STARS     OFFICIAL   AUTOMATED
nginx     Official build of Nginx.   16272     [OK]


二. 下载镜像

docker pull 命令用于从Docker 镜像仓库中拉取镜像到本地计算机。

命令的格式为:

docker pull 

示例:

$ docker pull nginx:1.20
1.20: Pulling from library/nginx
5eb5b503b376: Pull complete 
cdfeb356c029: Pull complete 
d86da7454448: Pull complete 
7976249980ef: Pull complete 
8f66aa6726b2: Pull complete 
c004cabebe76: Pull complete 
Digest: sha256:02923d65cde08a49380ab3f3dd2f8f90aa51fa2bd358bd85f89345848f6e6623
Status: Downloaded newer image for nginx:1.20
docker.io/library/nginx:1.20

注:如果在命令中不指定tag,则默认会下载标签为latest 的最新稳定版本镜像。

docker pull 命令支持的选项主要包括:

-a, --all-tags :拉取所有 tagged 镜像

--disable-content-trust :跳过镜像校验阶段,默认为开启

-q, --quiet:静默输出

三. 查看镜像信息

在下载镜像后,我们可以通过 docker images 或 docker image ls 命令查看本地已有镜像信息。这个命令可以帮助你查看已有镜像的大小、标签、ID等信息。

如:

$ docker images              
REPOSITORY   TAG        IMAGE ID       CREATED         SIZE
nginx        1.20       d6c9558ba445   2 weeks ago     141MB
nginx        1.21       c316d5a335a5   2 weeks ago     142MB

注:REPOSITORY显示镜像来源于哪个仓库;TAG为镜像的标签信息,通常会使用TAG来区分镜像版本;IMAGE ID 为镜像的唯一标识ID;CREATED表示镜像创建时间;SIZE为镜像大小;

命令主要有以下几个选项:

-a, --all : 显示包括临时镜像在内的所有镜像,默认为不显示;

-f, --filter filter:根据条件过滤镜像;

 --no-trunc :是否对输出结果较长部分进行截断,true为是,false为否;

假如需要查看单个镜像的详细信息,使用docker image inspect 命令,可看到镜像的启动命令、变量等更多配置信息。

示例:

$ docker image inspect nginx:1.20
[
    {
        "Id""sha256:c316d5a335a5cf324b0dc83b3da82d7608724769f6454f6d9a621f3ec2534a5a",
        "RepoTags": [
            "nginx:1.21"
],
......


四. 删除镜像

在使用较长时间后,系统中往往会因为各种原因而下载了各式各样的镜像文件。对此,可以定期进行镜像清理,避免占用过多存储空间。删除镜像可以使用docker rmi 或docker image rm 命令。

如:

$ docker rmi nginx:1.21

需要注意的是,如果有容器正在使用该镜像的话,那么镜像将无法删除,并且系统将会出现报错提示。

如下:

$ docker rmi nginx:1.21
Error response from daemon: conflict: unable to remove repository reference "nginx:1.21" (must force) - container dbd5d4bdbd6d is using its referenced image c316d5a335a5

在这种情况下 ,虽然可以使用加 -f 参数的方式强制删除,但不建议这样操作。正确的做法是找到该容器,在确认不再使用后停止并删除,然后再进行镜像的清理。

docker image prune 命令也可用于清理镜像,使用该命令的好处在于不需要用户指定镜像,命令会自动清理所有未被使用的镜像。

命令支持以下参数:
-a, --all             删除所有未使用镜像(默认只删除临时镜像)
--filter filter       根据条件筛选镜像
-f, --force          强制删除镜像

如下:

$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: nginx:1.20
untagged: nginx@sha256:02923d65cde08a49380ab3f3dd2f8f90aa51fa2bd358bd85f89345848f6e6623
deleted: sha256:d6c9558ba4456741fc4ee304e1a75a561e1c8d92f5107a715b6224bb7844f507
......
 
Total reclaimed space: 61.08MB

当清理完成后,显示结果会在最后提示释放的空间。

五. 归档与导入镜像

在某些情况下,我们可能需要将机器中的镜像导出,作为备份保存起来,或者将其导入到另一台机器中使用。此时,我们可以使用Docker 的镜像归档和导入命令。

docker save 命令用于将镜像保存为一个tar归档文件,格式如下:

docker save -o  

示例:

$ docker save -o /tmp/nginx_1.21.tar nginx:1.21

在镜像导出后,可以通过网络或拷贝等方式文件同步到其他机器上。此时,使用docker load 命令即可将文件导入到该机器的镜像库中。

示例:




    
$ docker load -i /tmp/nginx_1.21.tar

-------------------------------------------

Prometheus监控精品专栏,扫描下方二维码查看  ↓

全文结方便的话可以随手点个“赞”或者“在看”,也欢迎分享文章到朋友圈和技术群,感谢阅读!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/169881
 
42 次点击