主要内容:
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镜像来说,,如果不显示指定TAG,则会默认选择latest标签,这就会下载镜像仓库中的最新版本。 一般来说,使用latest标签就意味着该镜像内容会跟踪最新版本的变更而变化,内容是不稳定的。所以,建议不要在生产环境中使用latest标签。
镜像文件一般由若干层(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 images [OPTIONS] [REPOSITORY[:TAG]]
REPOSITORY:表示镜像来自哪个仓库。
TAG:表示镜像不同的版本信息,只用于标记,不能标识镜像。
IMAGE ID:表示镜像的唯一标识ID。
CREATED:表示镜像最后的更新时间。
SIZE:表示镜像的大小。这个大小只表示了它的逻辑体积大小,实际上由于相同的镜像层本地只会存储一份,物理上占用的存储空间会小于各镜像逻辑体积之和。
如果两个镜像的ID相同,说明它们实际指向了同一个镜像,只是不同的标签,执行:
docker tag alpine:3.8 alpine_tag:3.8
查看镜像,如下所示是相同的镜像ID。实际上是一个别名,起到了类似链接的作用。
1.3. 查看镜像详细信息命令(参数可用man docker-inspect来查看):
语法:docker inspect [OPTIONS] NAME|ID
这个命令返回的是JSON格式的消息,如果希望获取其中的一个信息的时候,可以用-f命令。
二、删除&清理镜像
2.1. 搜索镜像命令(参数可用man docker-rmi来查看),用于搜索官方仓库中的镜像:
语法:docker rmi [OPTIONS] IMAGE
当存在一样的ID的时候,会提示仓库被多个镜像关联,可以使用强制-f删除。也可以指定具体的NAME:TAG来删除。
当镜像已经用于启动容器,则会揭示该镜像不能删除。可以在停止并删除容器后,再来删除该镜像。
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
查看创建的镜像:
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
5.2. 查看镜像历史(参数可用man docker-history来查看),:
语法:docker history [OPTIONS] IMAGE
镜像是由多个层组成的,可以通过这个命令来年各层的创建信息:
docker history --no-trunc=true alpine:3.8
--no-trunc用来输出完整命令,在docker下的很多命令中都有这个参数,区别如下: