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单独记录说明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现