Docker镜像操作
镜像(image)
镜像(image)是Docker三大核心概念中为重要的,自Docker诞生之日起“镜像”就是相关社区为热门的关键词。
Docker运行容器前需要本地存在对应的镜像,如果镜像没保存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器的仓库),用户也可以通过配置,使用自定义的镜像仓库。
1. 搜索镜像
# 使用docker search [sɜːrtʃ] 命令可以搜索远端仓库中共享的镜像,默认搜索官方仓库中的镜像。
# 用法为docker search 关键字,支持的参数主要包括:
--automated=true|false: [ˈɔːtəmeɪtɪd] 仅显示自动创建的镜像,默认为否;
--no-trunc=true|false:输出信息不截断显示,默认为否;
-s, --stars=X:指定仅显示评价为指定星级以上的镜像,默认为0,即输出所有镜像。
2. 获取镜像
# 对于Docker镜像来说,如果不显式指定TAG,则默认会选择latest [ˈleɪtɪst] 标签,这会下载仓库中新版本的镜像。
$ docker pull centos
# 如果从非官方的仓库下载,则需要在仓库名称前指定完整的仓库地址。例如从网易蜂巢的镜像源来下载ubuntu:14.04镜像,可以使用如下命令,此时下载的镜像名称为
$ docker pull hub.c.163.com/public/ubuntu:14.04
3. 查看镜像信息
$ docker images
- repository [rɪˈpɑːzətɔːri] 来自于哪个仓库:比如ubuntu仓库用来保存ubuntu系列的基础镜像
- 镜像的标签信息:比如14.04、latest用来标注不同的版本信息。标签只是标记,并不能标识镜像内容;TAG信息用来标记来自同一个仓库的不同镜像。例如ubuntu仓库中有多个镜
像,通过TAG信息来区分发行版本。
- 镜像的ID(唯一标识镜像):如果镜像ID相同,说明实际上指向同一个镜像;在使用镜像ID的时候,一般可以使用该ID的前若干个字符组成的可区分串来替代完整的ID
- 创建时间:说明镜像后的更新时间;
- 镜像大小:优秀的镜像往往体积都较小。镜像大小信息只是表示该镜像的逻辑体积大小,实际上由于相同的镜像层本地只会存储一份,物理上占用的存储空间会小于各镜像的逻辑体积之和。
4. docker inspect[ɪnˈspekt] : 获取容器/镜像的元数据。
### docker inspect[ɪnˈspekt] : 获取容器/镜像的元数据。
元数据: 描述数据的数据,对数据及信息资源的描述性信息。
语法:`docker inspect [OPTIONS] NAME|ID [NAME|ID...]`
OPTIONS说明:
-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
# 可以使用参数-f来指定,例如,获取镜像的Architecture [ˈɑːrkɪtektʃər]:
$ docker inspect -f {{".Architecture"}} nginx
5. 删除镜像
$ docker rmi 镜像名/id
6. 创建镜像
创建镜像的方法主要有三种:
基于已有镜像的容器创建
基于本地模板导入
基于Dockerfile创建。
# 该方法主要是使用docker commit命令。
语法:`docker commit [OPTIONS] CONTAINER
[REPOSITORY[:TAG]]`
- -a, --author="": [ˈɔːθər] 作者信息;
- -c, --change=[]:提交的时候执行Dockerfile指令,包括
CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR等;
- -m, --message="":提交消息;
- -p, --pause=true: [pɔːz]提交时暂停容器运行
7. push镜像
语法:`docker push <hub-user>/<repo-name>:<tag>`
# 样例
$ docker push lidnyun/kube-apiserver-amd64:v1.5.5