主要内容:

    O、概念

    一、获取&查看镜像

    二、删除&清理镜像

    三、创建&上传镜像 

    四、存出&载入镜像

    五、搜索镜像&查看镜像历史

 

O、概念

Docker运行容器前需要在本地有对应的镜像,如果镜像不存在,Docker就会默认从镜像仓库下载(默认是Docker Hub公共注册服务器中的仓库)。也可以通过配置,使用自定义的镜像仓库,详见配置方式第二章

 

一、获取&查看镜像

 1.1. 获取镜像 pull 命令,通常描述一个镜像需要包括 "名称+标签"。

   语法:docker pull NAME[:TAG|@DIGEST]

   NAME:是镜像仓库的名称,用来区分镜像。

   TAG:是镜像的标签,一般用来表示版本。

   获取一个apline带3.8版本的镜像:

docker pull alpine:3.8

docker build pull 拉取已有的层 docker pull tag_上传

   对于docker镜像来说,,如果不显示指定TAG,则会默认选择latest标签,这就会下载镜像仓库中的最新版本。 一般来说,使用latest标签就意味着该镜像内容会跟踪最新版本的变更而变化,内容是不稳定的。所以,建议不要在生产环境中使用latest标签。

 

docker build pull 拉取已有的层 docker pull tag_docker_02

   镜像文件一般由若干层(layer)组成,下载过程中会有image layer的各层信息。类似上面截图中的c87736221cd0和c7c96db7181b是层的唯一id。当不同镜像包括相同层时,本地仅存储一份层的内容,减少存储空间。

   获取镜像文件的时候,默认官方仓库下载镜像。如果要获取非官方的镜像时,需要在仓库名称前指定完整的仓库地址,如获取daocloud的nginx镜像时:

docker pull daocloud.io/library/nginx:1.13.0-alpine

 

 1.2. 查看镜像信息命令(参数可用man docker-images来查看),一般可以使用镜像ID的前若干字符来替代完整的ID。

docker build pull 拉取已有的层 docker pull tag_上传_03

   语法:docker images [OPTIONS] [REPOSITORY[:TAG]]

   REPOSITORY:表示镜像来自哪个仓库。

   TAG:表示镜像不同的版本信息,只用于标记,不能标识镜像。

   IMAGE ID:表示镜像的唯一标识ID。

   CREATED:表示镜像最后的更新时间。

   SIZE:表示镜像的大小。这个大小只表示了它的逻辑体积大小,实际上由于相同的镜像层本地只会存储一份,物理上占用的存储空间会小于各镜像逻辑体积之和。

  

   如果两个镜像的ID相同,说明它们实际指向了同一个镜像,只是不同的标签,执行:

docker tag alpine:3.8 alpine_tag:3.8

   查看镜像,如下所示是相同的镜像ID。实际上是一个别名,起到了类似链接的作用。

   

docker build pull 拉取已有的层 docker pull tag_上传_04

 

 1.3. 查看镜像详细信息命令(参数可用man docker-inspect来查看): 

   语法:docker inspect [OPTIONS] NAME|ID

   这个命令返回的是JSON格式的消息,如果希望获取其中的一个信息的时候,可以用-f命令。

docker build pull 拉取已有的层 docker pull tag_docker_05

 

二、删除&清理镜像

 2.1. 搜索镜像命令(参数可用man docker-rmi来查看),用于搜索官方仓库中的镜像: 

   语法:docker rmi [OPTIONS] IMAGE

   当存在一样的ID的时候,会提示仓库被多个镜像关联,可以使用强制-f删除。也可以指定具体的NAME:TAG来删除。

docker build pull 拉取已有的层 docker pull tag_上传_06

   当镜像已经用于启动容器,则会揭示该镜像不能删除。可以在停止并删除容器后,再来删除该镜像。

docker build pull 拉取已有的层 docker pull tag_上传_07

 

2.2. 清理镜像命令(参数可用man docker-image-prune来查看)。 

   语法:docker image prune [OPTIONS]

   清理临时镜像:

docker image prune

  清理所有无用镜像,包括没有使用的镜像和临时镜像:

docker image prune -a

 

三、创建&上传镜像

 3.1. 创建镜像命令(参数可用man docker-commit来查看): 

   语法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

   甚于已有容器创建:

// 启动一个容器
docker run alpine:latest
// 查看容器ID
docker ps -a
// 提交为一个镜像,参数依次为提交信息,作者名,容器ID,镜像名:标签
docker commit -m "just commit" -a "allbetter" c9b6615daf1f test:0.1

   查看创建的镜像:

docker build pull 拉取已有的层 docker pull tag_上传_08

 

 3.2. 上传镜像命令(参数可用man docker-push来查看): 

   语法:docker push [OPTIONS] NAME:TAG

   默认上传到Docker Hub官方仓库,可以先打标签,再上传:

docker tag test:0.1 allbetter/test:0.1
docker push allbetter/test:0.1

   第一次上传会提示输入登录信息,之后登录信息会存在~/.docker里。如果是其它的仓库地址,则要加镜像前加上完整的仓库地址,同上面pull中的一样。 

 

四、存出&载入镜像

 4.1. 存出镜像命令(参数可用man docker-save来查看),用于导出镜像到tar文件: 

   语法:docker save [OPTIONS] IMAGE

   将alpine:3.8在当前目录导出为alpine.tar的文件:

docker save -o alpine.tar alpine:3.8
或
docker save > alpine.tar alpine:3.8

 

 4.2. 载入镜像命令(参数可用man docker-load来查看),用于导入tar文件为镜像: 

   语法:docker load [OPTIONS]

   将alpine.tar导入镜像到镜像列表:

docker load -i alpine.tar
或
docker load < alpine.tar

 

 

五、搜索镜像&查看镜像历史

 5.1. 搜索镜像命令(参数可用man docker-search来查看),用于搜索官方仓库中的镜像: 

   语法:docker search [OPTIONS] TERM


docker build pull 拉取已有的层 docker pull tag_docker_09

 

 

 5.2. 查看镜像历史(参数可用man docker-history来查看),: 

   语法:docker history [OPTIONS] IMAGE

   镜像是由多个层组成的,可以通过这个命令来年各层的创建信息:

docker history --no-trunc=true alpine:3.8

   --no-trunc用来输出完整命令,在docker下的很多命令中都有这个参数,区别如下:

docker build pull 拉取已有的层 docker pull tag_docker_10