docker——镜像(image)
镜像相关命令一览表:
- docker images
- docker tag
- docker inspect
- docker history
- docker search
- docker pull/push
- docker rmi
- docker save/load
1.查看镜像
(1)docker images:列出本地主机上已有镜像的基本信息。

REPOSITORY:来自哪个仓库。
my-jx和test来自本地,也就是这两个镜像是自己创建的。
docker.io/nginx表示来自docker官方服务器的nginx这个仓库。
daocloud.io/index.tenxclound.com是国内云服务提供商提供的镜像。
cent0s7-ansibel是自己创建的一个标签。
TAG:镜像的标识信息,latest表示最新版本。
TAG标记主要用来表示来自同一个仓库的不同镜像。
IMAGE ID:镜像的ID(唯一标识)
ID非常重要,实际上完整的id应该包括256个比特,由64个十六进制字符组成。
上面docker.io/centos的ID是75835a67d134,完整的ID应该是75835a67d1341bdc7f4cc4ed9fa1631a7d7b6998e9327272afea342d90c4ab6d。
可以使用docker inspect查看完整的ID。
在使用镜像ID的时候,可以只使用前若干个字符就可以代表完整的ID。
CREATED:创建时间
SIZE:镜像的大小。好的镜像往往体积都比较小。
镜像大小信息只是表示该镜像的逻辑体积大小。

上面这个两个镜像其实只是一个镜像,只是打了一个标签而已。
逻辑体积是447MB,但是实际上了物理上占用的空间应该会小于各镜像的逻辑体积之和
docker images还支持一些子命令:
-a, --all=true|false:列出所有的镜像文件,包括零时文件,默认为否;
--digests=true|false:列出镜像的数字摘要值。否问为否;
-f, --filter=[]:过滤列出的镜像;
--format="TEMPLATE":控制输出格式;
--no-trunc=true|false:对输出结果中太长的部分是否进行截断;
-q, --quiet=true|false:仅输出ID信息,默认为否;
(2)docker tag:给镜像打标签

有时候从仓库里拉下的镜像名称很长,这是由于这个名称其实代表的是存储的路径,所以可能有多层。
这个时候为了方便起见,我们可以给他打上一个标签。我们可以发现它们的ID还是相同的,其实指向同一个镜像。
下面这两种方式都是可行的。
docker tag 758 centos 使用ID,给id为758的镜像打上一个centos的标签
docker tag docker.io/centos centos7.2 使用全名
(3)docker inspect:查看镜像的详细信息
[root@centos003 ~]# docker inspect centos
[
{
"Id": "sha256:1e1148e4cc2c148c6890a18e3b2d2dde41a6745ceb4e5fe94a923d811bf82ddb", #完整id
"RepoTags": [
"centos:latest" #标签信息
],
"RepoDigests": [ #镜像摘要,推测以此来保持镜像的完整性
"centos@sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426"
],
"Parent": "", #父镜像,镜像可能是多层的
"Comment": "", #说明
"Created": "2018-12-06T00:21:07.135655444Z", #创建时间
"Container": "1fdbb0fcc184eb795364f7aa5fdc00299d0a2b90d8e26b4696217c22da7f983f",
"ContainerConfig": { #容器配置时的一些参数
"Hostname": "1fdbb0fcc184", #主机名
"Domainname": "", #域名
"User": "", #用户
"AttachStdin": false, #标准输入与输出
"AttachStdout": false,
"AttachStderr": false,
"Tty": false, #标准输入设备相关
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" #环境变量
],
"Cmd": [
"/bin/sh", //解释器相关
"-c",
"#(nop) ",
"CMD [\"/bin/bash\"]"
],
"ArgsEscaped": true,
"Image": "sha256:b3a68d99a4a4195c6c97c2345b83cb2d6cfd1661247816ac403cf0b584437ad7",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": { #标签
"org.label-schema.build-date": "",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS"
}
},
"DockerVersion": "17.06.2-ce",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"ArgsEscaped": true,
"Image": "sha256:b3a68d99a4a4195c6c97c2345b83cb2d6cfd1661247816ac403cf0b584437ad7",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": ,
"VirtualSize": ,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/b702fb99abd74dc2e547901ec1b09008a2d649864941c3954269390661912b87/merged",
"UpperDir": "/var/lib/docker/overlay2/b702fb99abd74dc2e547901ec1b09008a2d649864941c3954269390661912b87/diff",
"WorkDir": "/var/lib/docker/overlay2/b702fb99abd74dc2e547901ec1b09008a2d649864941c3954269390661912b87/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:071d8bd765171080d01682844524be57ac9883e53079b6ac66707e192ea25956"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
docker inspect 还支持一些子命令。
-f, --format="":格式化输出,可以通过这个参数过滤出想要的信息。
-s, --size:如果类型为容器,则显示总文件的大小
--type=container|image|network|node|service|task|volume:辅助查询
如果你想查看ContainerConfig信息:
docker inspect -f {{.ContainerConfig}} 1e11
docker inspect -f {{.ContainerConfig.Hostname}} 1e11
(4)docker history:列出各层的创建信息

2.搜寻镜像:搜索仓库中共享的镜像,默认搜索官方仓库。

INDEX:属于哪个仓库
NAME:名称
DESCRIPTION:描述
STARS:星级
OFFICIAL:是否是官方的
AUTOMATED:是否自动
docker search的子命令:
docker search [-f|--filter[=[]]] [--help] [--limit[=LIMIT]] [--no-index] [--no-trunc] TERM
-f, --filter=[]:过滤信息
--no-index=true|false:不要在输出中包含索引名称。排序结果主要由注册表名。
--limit=LIMIT:返回的最大搜索结果。默认值为25。
--no-trunc=true|false:输出星系不截断显示,默认为否
示例:
docker search --filter=starts=3 fedora 星级大于等于三的结果
docker search -s 3 fedora
docker search --filter=is-automated=true --filter=stars=1 fedora 自动化并且星级大于等于1
docker search --limit=10 fedora
3.获取镜像
dockers pull:直接从Docker Hub镜像源来下载镜像
docker pull [-a|--all-tags] [--help] NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]

一般不指定具体的名称,就会默认下载最新的版本latest。
一般来说,latest 一般是最新版本但是并不稳定,因此在生产环境中最好还是使用稳定的版本。
在拉去镜像的时候还可以指定拉取的位置。示例如下:
docker pull hub.c.163.com/public/lamp:latest 网易
4.删除镜像
docker rmi 删除镜像
docker rmi [-f|--force] [--help] [--no-prune] IMAGE [IMAGE...]

(1)根据标签删除名称删除镜像

(2)根据ID删除镜像
之前说过,为了方便起见,我们会给镜像打标签,这样删除一个id可能就可能删除多项。

需要注意的情况是当镜像被容器依赖的情况:

此时你必须先删除依赖该镜像的所有容器,再来删除镜像,当然你也可以-f强制删除。

5.创建镜像
创建镜像的方法有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。
(1)基于已有的容器创建
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
子命令参数:
-a, --author="":作者信息
-c , --change=[]: 提交的时候执行Dockerfile指令
-m, --message="":提交消息
-p, --pause=true|false:提交时暂停容器运行

查看:

(2)基于Dockerfile创建
详细内容请查看:xxxxx
6.存出和载入镜像
docker save:导出镜像到本地文件
docker load:将导出的tar文件再次导入镜像库
导入到本地:

删除原镜像:

载入镜像:

查看结果:

7.上传镜像
可以使用docker push命令上传镜像到仓库,默认上传到官方仓库
docker——镜像(image)的更多相关文章
- MySQL、MongoDB、Redis数据库Docker镜像制作
MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...
- 理解Docker(2):Docker 镜像
本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- 如何合并两个Docker 镜像
http://www.open-open.com/lib/view/open1437746544709.html 在你的机器上使用docker pull来从Docker Hub下载镜像. docker ...
- Docker镜像的管理和创建
1. Docker镜像和Docker容器: Docker镜像实际上是一系列的文件系统,通常的Linux系统一般是两层文件系统,bootfs和rootfs,bootfs就是bootloader ...
- docker 源码分析 四(基于1.8.2版本),Docker镜像的获取和存储
前段时间一直忙些其他事情,docker源码分析的事情耽搁了,今天接着写,上一章了解了docker client 和 docker daemon(会启动一个http server)是C/S的结构,cli ...
- docker使用阿里云Docker镜像库加速
官方镜像下载实在是慢,于是开通了阿里云开发者帐号, 官方帮助 阿里云Docker镜像库 阿里云容器Hub服务:http://dev.aliyun.com/search.html 来自云端的容器Hub服 ...
- 第四章 使用Docker镜像和仓库(二)
第四章 使用Docker镜像和仓库(二) 回顾: 开始学习之前,我先pull下来ubuntu和fedora镜像 [#9#cloudsoar@cloudsoar-virtual-machine ~]$s ...
- 第四章 使用Docker镜像和仓库
第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...
- 将 ASP.NET Core 1.0 应用作为 docker 镜像发布 (Linux版)
var appInsights=window.appInsights||function(config){ function r(config){t[config]=function(){var i= ...
- Docker镜像
docker镜像123? 额,由于没有实验环境,没有亲手实践,因此理解可能有不对的地方. 反正也是学习笔记,以后再修改吧... docker的镜像跟virtualbox的镜像不一样.在虚拟机中,镜像是 ...
随机推荐
- linux -- ubuntuserver 安装图形界面
安装Gnome桌面 1.安装全部桌面环境,其实Ubuntu系列桌面实际上有几种桌面应用程序,包括Ubuntu-desktop.Kubunut-desktop和Xubuntu- desktop. 我们就 ...
- 【BZOJ】1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富(dp)
http://www.lydsy.com/JudgeOnline/problem.php?id=1668 裸dp.. f[i][j]表示i行j列最大能拿到 f[i][j]=max(f[i+1][j-1 ...
- Python Scrapy 自动爬虫注意细节(3)
一.对指定页面爬取 yield Request(url, meta={'cookiejar': response.meta['cookiejar']}, callback=self.parse_url ...
- AVR 定时器快速PWM模式使用
PWM很常用,AVR自带内部PWM功能,分为快速PWM模式和相位修正PWM模式. 我们这里选择方式15 ,由OCR1A保存上限值,由OCR1B保存匹配值,所以输出管脚 OCR1A不能输PWM,只能 ...
- github 's usage
author:headsen chen date: 2018-05-30 10:50:56 notice:This article is created by headsen chen him ...
- 【BZOJ2956】模积和 分块
[BZOJ2956]模积和 Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. Input 第一行两个数n,m ...
- 【BZOJ4872】[Shoi2017]分手是祝愿 数学+期望DP
[BZOJ4872][Shoi2017]分手是祝愿 Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n ...
- 全链路追踪spring-cloud-sleuth-zipkin
微服务架构下 多个服务之间相互调用,在解决问题的时候,请求链路的追踪是十分有必要的,鉴于项目中采用的spring cloud架构,所以为了方便使用,便于接入等 项目中采用了spring cloud s ...
- Spring MVC静态资源访问
最近在学习servlet的时候发现自己不能访问到css和js, 于是google一番学到不少方法加载,总结如下: 1.对于Spring MVC, 由于我们截获了所有请求<url-pattern& ...
- Hadoop单点伪分布模式安装
Hadoop单点伪分布模式安装 概述 单点 single-node,单节点,即一台计算机. 伪分布式模式 pseudo-distributed mode 所谓集群,表面上看是多台计算机联合完成任务:但 ...