Docker镜像常用管理命令

关注公众号:“DevOps实战派”,获取更多DevOps和运维的精彩内容。

在容器的世界中,镜像是一切的基础。为了有效地管理和利用这些镜像,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 <image_name:tag>

示例:

$ 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 <file_name.tar> <image_name:tag>

示例:

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

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

示例:

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

六. 结语

通过使用Docker镜像管理命令,你可以轻松地查找、下载、查看、删除和分享镜像,从而更好地管理Docker环境。

希望本文能够帮助你更好地理解和利用Docker镜像管理命令,使你的容器化应用程序开发和部署更加高效和可靠。

公众号好文推荐:

虚拟化与容器化:哪个更适合你?

Prometheus如何监控容器

  • 25
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值