三、镜像管理

于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

效果如下

image-20210927144618364

参考来自:show_tag

4、验证镜像完整性

列出容器的sha256值,即镜像数字摘要值,用于验证是否完整

docker images --digests #或者
docker images --digests=true

image-20210927142003307

5、仅输出ID信息

只显示镜像的id

docker images -q #或者
docker images -q=true

image-20210927145916096

6、查看镜像详细信息

包括制作者,适应架构,各层数字摘要等

docker inspect centos

image-20210927154314307

7、查看镜像历史信息

此命令可以列出各层的创建信息

docker history centos

image-20210927151433827

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

效果如下

image-20210927151028482

注意

镜像才有标签,容器只有名字跟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技术入门与实践》第三版

狂神说docker

posted @ 2020-01-25 10:49  努力吧阿团  阅读(358)  评论(0编辑  收藏  举报