于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/,/,
/g' -e 's/[/[
/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
1.4 列出镜像数字摘要值
列出容器的sha256值,用于验证是否完整
docker images --digests #或者
docker images --digests=true
1.5 仅输出ID信息
只显示镜像的id
docker images -q #或者
docker images -q=true
1.6 查看镜像详细信息
包括制作者,适应架构,各层数字摘要等
docker inspect centos
1.7 查看镜像历史信息
此命令可以列出各层的创建信息
docker history centos
1.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标签,此时就会下载最新镜像,镜像内容会随着最新版本变更而变化,生产环境中需要指定标签。
三、镜像使用
3.1 添加标签
tag命令给镜像添加标签,标签一般用来标识该镜像的版本信息
docker tag ubuntu:18.04 myubuntu:latest
效果如下
注意
镜像才有标签,容器只有名字跟id,没有标签。
标签可以随意添加修改,同一个镜像可以有不同的标签,如上述centos就有v8跟latest标签,但本质上都是同一个镜像,因为镜像是使用ID来区分的,他们的ID是一样的。
3.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.3 导出镜像
1)使用export导出,导出tar包大小比save小
#将名为c1的容器打包
docker export -o centos-httpd.tar c1
#将打包的容器导入为镜像
docker import centos-httpd.tar centos-httpd:v1
2)使用save导出
#导出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
两者的区别
我们先了解一下容器,容器是通过镜像启动的,我们知道镜像是只读不可写的,我们对容器执行一个命令就会增加一层读写层,长期使用容器就会有很多层。
export导出只会导出容器最终的样子,不能保留每一层layer信息,就无法进行回滚操作;
save导出的文件可以完整保留下每一层layer信息,可以进行回滚操作,就是tar包要大一点;
建议
若是想备份所有读写层,可以回滚到任何操作的层,使用save
若是在启动容器后,容器内容有变化,需要备份,则使用export
3.4 上传镜像
Docker Hub网站上注册后就能上传自制镜像。
#先给镜像改个标签
docker tag ubuntu:latest tz/ubuntu:latest
#上传镜像
docker push tz/ubuntu:latest
四、删除镜像
4.1 普通删除
删除镜像要先删除容器,比较保险。
#删除容器
docker ps -a
docker rm c1
docker rm 333dce61a32d #简写为
docker rm 3
#删除镜像
docker rmi centos
4.2 强制删除
无需先删除容器
docker rmi -f ubuntu:18.04
4.3 删除全部
docker rmi $(docker images -q)
docker rmi -f $(docker images -q)
4.4 清理镜像文件层
清理临时的遗留镜像文件层
docker image prune -f
五、参考资料
《Docker技术入门与实践》第三版