1.什么是Docker镜像
Docker镜像是由文件系统叠加而成(是一种文件的存储形式)。最底端是一个文件引导系统,即bootfs,这很像典型的Linux/Unix的引导文件系统。Docker用户几乎永远不会和引导系统有什么交互。实际上,当一个容器启动后,它将会被移动到内存中,而引导文件系统则会被卸载,以留出更多的内存供磁盘镜像使用。Docker容器启动是需要的一些文件,而这些文件就可以称为Docker镜像。
2 Docker镜像操作
2.1 列出镜像
2.1.1 列出docker下的当前docker服务所在的系统里面所有镜像
docker images
REPOSITORY:镜像所在的仓库名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小 这些镜像都是存储在Docker宿主机的/var/lib/docker目录下
2.1.2 同一个仓库下的不同镜像
Docker提供了一种称为标签(Tag)的功能。每个镜像在列出来时都带有一个标签,例如12.10、12.04等等。每个标签对组成特定镜像的一些镜像层进行标记(比如,标签12.04就是对所有Ubuntu12.04镜像层的标记)。这种机制使得同一个仓库中可以存储多个镜像。
在运行同一个仓库中的不同镜像时,可以通过在仓库名后面加上一个冒号和标签名来指定该仓库中的某一具体的镜像,例如
docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash
表明从镜像Ubuntu:12.04启动一个容器,而这个镜像的操作系统就是Ubuntu:12.04。在构建容器时指定仓库的标签也是一个好习惯。
2.3搜索镜像
如果需要从网络中查找需要的镜像,可以通过以下命令搜索:
# 搜索镜像:方式一:https://hub.docker.com/ 点点点搜索方式二:docker search 镜像名字# # search作用:搜索Docker Hub(镜像仓库)上的镜像
# 命令格式:docker search [OPTIONS] TERM
# 命令参数(OPTIONS):-f, --filter filter 根据提供的格式筛选结果--format string 利用Go语言的format格式化输出结果--limit int 展示最大的结果数,默认25个--no-trunc 内容全部显示# 命令演示
docker search -f is-offical=true tomcat
docker search tomcat
NAME:仓库名称
DESCRIPTION:镜像描述
STARS:用户评价,反应一个镜像的受欢迎程度
OFFICIAL:是否官方
AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的
2.4拉取镜像
2.4.1从Docker Hub拉取
Docker Hubhttps://hub.docker.com/
Docker镜像首页,包括官方镜像和其它公开镜像。Docker Hub上最受欢迎的10大镜像(通过Docker registry API获取不了镜像被pull的个数,只能通过镜像的stars数量,来衡量镜像的流行度。毫无疑问,拥有最高stars数量的库都是官方库)。
由于国情的原因,国内下载 Docker HUB 官方的相关镜像比较慢,可以使用国内(docker.io)的一些镜像加速器,镜像保持和官方一致,关键是速度块,推荐使用。
2.4.2 Mirror与Private Registry的区别
Private Registry(私有仓库):开发者或者企业自建的镜像存储库,通常用来保存企业内部的 Docker 镜像,用于内部开发流程和产品的发布、版本控制。
Mirror:代理中转服务,比如daocloud提供的Mirror服务,直接对接Docker Hub的官方Registry。Docker Hub 上有数以十万计的各类 Docker 镜像。 在使用Private Registry时,需要在Docker Pull 或Dockerfile中直接键入Private Registry 的地址,通常这样会导致与 Private Registry 的绑定,缺乏灵活性。
使用 Mirror 服务,只需要在 Docker 守护进程(Daemon)的配置文件中加入 Mirror 参数,即可在全局范围内透明的访问官方的 Docker Hub,避免了对 Dockerfile 镜像引用来源的修改。
2.4.3 拉取镜像
# 拉取指定版本
docker pull centos:7
# 拉取最新版本
docker pull centos
目前国内访问docker hub速度上有点尴尬,使用docker Mirror势在必行。现有国内提供docker镜像加速服务的商家有不少,下面重点ustc镜像。 2.4.4
2.4.4 国内ustc镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
Docker 镜像使用帮助 - LUG @ USTCDocker 镜像使用帮助https://lug.ustc.edu.cn/wiki/mirrors/help/docker 步骤:
(1)编辑该文件:vi /etc/docker/daemon.json PS: 如果该文件不存在就手动创建;另外有可能如果没有vim 命令则使用vi命令即可。
(2)在该文件中输入如下内容:
{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}
还有本地阿里云的镜像地址,速度更快
{ "registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}
3)一定要重启docker服务,如果重启docker后无法加速,可以重新启动OS,然后通过docker pull命令下载镜像 。
service docker restart
2.4 查看镜像
# 查看机器上有哪些镜像
# 命令:docker images
# 解释:REPOSITORY TAG IMAGE ID CREATED SIZE
镜像名字 版本 id号 创建时间 大小
2.5 运行镜像
# 命令:
docker run 镜像名字docker run hello-world# 例:
第一个hello-world(没有任何意义)docker run hello-world1 客户端连到服务端,服务下载了hello-world镜像2 通过镜像跑起容器来3 容器输出一些东西,通过服务端发送给客户端,客户端展示在窗口里了
2.6 删除镜像
删除镜像方式1:根据仓库的名称(镜像的名称)来删除 还可以使用image_id来进行删除。
# 命令:
docker rmi 镜像名字/Id号# 注意:
1.如果还有基于这个镜像的容器,是不允许删除镜像的
2.可以先删除容器,在删除镜像# 查询容器依赖 docker ps -a# 在删除要不允许的镜像docker rm 容器/id
删除镜像方式2:
docker rmi `docker images -q`:删除所有镜像
2.7 镜像容器的实质
镜像容器是可以看作:-镜像就是一堆文件,这堆文件通过docker跑起来,就是容器,你现在就把他当成,一个操作系统内跑了这个软件(比如就是:centos+redis)-假设centos7的镜像跑起来,此时容器你就当成在你宿主机上跑了一个centos7的操作系统(虚拟机)