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单独记录说明

浙公网安备 33010602011771号