三、镜像管理
于2021年9月27日重新编辑
一、镜像查询
1.1 查看本地镜像
docker images #或者
docker image ls
#查看所有镜像
docker images -a #或者
docker images -all
1.2 搜索镜像
docker search centos
1.3 搜索时列出tag
vim docker-show-tag.sh
#!/bin/sh
#
# Simple script that will display docker repository tags.
#
# Usage:
# $ docker-show-repo-tags.sh ubuntu centos
for Repo in $* ; do
curl -s -S "https://registry.hub.docker.com/v2/repositories/library/$Repo/tags/" | \
sed -e 's/,/,\n/g' -e 's/\[/\[\n/g' | \
grep '"name"' | \
awk -F\" '{print $4;}' | \
sort -fu | \
sed -e "s/^/${Repo}:/"
done
chmod +x docker-show-tag.sh
./docker-show-tag.sh centos
效果如下
参考来自:show_tag
4、验证镜像完整性
列出容器的sha256值,即镜像数字摘要值,用于验证是否完整
docker images --digests #或者
docker images --digests=true
5、仅输出ID信息
只显示镜像的id
docker images -q #或者
docker images -q=true
6、查看镜像详细信息
包括制作者,适应架构,各层数字摘要等
docker inspect centos
7、查看镜像历史信息
此命令可以列出各层的创建信息
docker history centos
8、镜像过滤
--filter表示过滤,可简写为-f
搜索所有收藏数大于等于4的tensorflow镜像
docker search -f=stars=4 tensorflow #等同于
docker search --filter=stars=4 tensorflow
搜索官方提供的nginx镜像
docker search --filter=is-official=true nginx
二、镜像下载
1)下载centos镜像
docker pull centos #或者
docker image pull centos
#7.9.2009就是标签,用于标识镜像版本信息
docker pull centos:7.9.2009
注意不指定TAG标签默认为latest标签,此时就会下载最新镜像,镜像内容会随着最新版本变更而变化,生产环境中需要指定标签。
三、镜像使用
1、添加标签
tag命令给镜像添加标签,标签一般用来标识该镜像的版本信息
docker tag ubuntu:18.04 myubuntu:latest
效果如下
注意
镜像才有标签,容器只有名字跟id,没有标签。
标签可以随意添加修改,镜像是使用ID来区分镜像的,同一个镜像可以有不同的标签,如上述centos就有v8跟latest标签,但本质上都是centos镜像。
2、创建镜像
1)基于已有容器创建镜像
#查看容器ID,根据ID创建镜像
docker ps –a
docker commit a925cb40b3f0 test:0.1
#给创建的镜像添加一些信息
docker commit -m "Added a new file" -a "tz" a925cb40b3f0 test:0.1
:'
commit:提交镜像
-m:提交消息,相当于备注
-a:作者信息
a925cb40b3f0:容器ID
test:0.1:镜像名字
'
2)基于Dockerfile创建镜像
Dockerfile是一个文本文件,里面有一些执行命令,相当于shell脚本。
后续会介绍Dockerfile,这里了解即可。
3、导出镜像
导出镜像分为两种:
- 应用镜像(只包含容器)
- 应用镜像+基础镜像(容器+镜像)
1)导出应用镜像(容器)
#将名为c1的容器打包
docker export -o centos-httpd.tar c1
#将打包的容器导入为镜像
docker import centos-httpd.tar centos-httpd:v1
2)导出应用镜像跟基础镜像(容器+镜像)
#导出ubuntu镜像
docker save -o ubuntu_18.04.tar ubuntu:18.04
du –sh ubuntu_18.04.tar
scp centos.tar 10.154.0.111:/root
#导入镜像
docker load -i ubuntu_18.04.tar #或者
docker load < ubuntu_18.04.tar
导出镜像有save跟export命令两种方式
export导出只包括容器,即读写层信息,不包括只读层镜像
save导出包括容器跟镜像,load后还是之前save的镜像名,所以save打包的镜像占用空间会很大故只想备份镜像,使用save
若是在启动容器后,容器内容有变化,需要备份,则使用export
4、上传镜像
Docker Hub网站上注册后就能上传自制镜像。
#先给镜像改个标签
docker tag ubuntu:latest tz/ubuntu:latest
#上传镜像
docker push tz/ubuntu:latest
四、删除镜像
1、普通删除
删除镜像要先删除容器,比较保险。
#删除容器
docker ps -a
docker rm c1
docker rm 333dce61a32d #简写为
docker rm 3
#删除镜像
docker rmi centos
2、强制删除
无需先删除容器
docker rmi -f ubuntu:18.04
3、删除全部
docker rmi $(docker images -q)
4、清理镜像文件层
清理临时的遗留镜像文件层
docker image prune –f
五、参考资料
《Docker技术入门与实践》第三版
今天的学习是为了以后的工作更加的轻松!