Docker技术入门与实战(第2版)3.1 获取镜像

使用Docker镜像

镜像(image)是Docker三大核心概念中最为重要的,自Docker诞生之日起“镜像”就是相关社区最为热门的关键词。

Docker运行容器前需要本地存在对应的镜像,如果镜像没保存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Docker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库。

本章将介绍围绕镜像这一核心概念的具体操作,包括如何使用pull命令从Docker Hub仓库中下载镜像到本地,如何查看本地已有的镜像信息和管理镜像标签,如何在远端仓库使用search命令进行搜索和过滤,如何删除镜像标签和镜像文件,如何创建用户定制的镜像并且保存为外部文件。最后,还介绍如何往Docker Hub仓库中推送自己的镜像。

一份非官方研究报告表明,image一直是Docker官方社区(2014~2016年)和StackOverFlow Docker板块(2013~2016年)的年度热词。

3.1 获取镜像

镜像是运行容器的前提,官方的Docker Hub网站已经提供了数十万个镜像供大家开放下载。

可以使用docker pull命令直接从Docker Hub镜像源来下载镜像。该命令的格式为docker pull NAME[:TAG]。其中,NAME是镜像仓库的名称(用来区分镜像),TAG是镜像的标签(往往用来表示版本信息)。通常情况下,描述一个镜像需要包括“名称+标签”信息。

例如,获取一个Ubuntu 14.04系统的基础镜像可以使用如下的命令:

$ docker pull ubuntu:14.04

14.04: Pulling from library/ubuntu

6c953ac5d795: Pull complete

3eed5ff20a90: Pull complete

f8419ea7c1b5: Pull complete

51900bc9e720: Pull complete

a3ed95caeb02: Pull complete

Digest: sha256:97421885f3da3b23f52eeddcaa9f8f91172a8ac3cd5d3cd40b51c7aad09f66cc

Status: Downloaded newer image for ubuntu:14.04

对于Docker镜像来说,如果不显式指定TAG,则默认会选择latest标签,这会下载仓库中最新版本的镜像。

下面的例子将从Docker Hub的Ubuntu仓库下载一个最新的Ubuntu操作系统的镜像。

$ docker pull ubuntu

Using default tag: latest

latest: Pulling from library/ubuntu

5ba4f30e5bea: Pull complete

9d7d19c9dc56: Pull complete

ac6ad7efd0f9: Pull complete

e7491a747824: Pull complete

a3ed95caeb02: Pull complete

Digest: sha256:46fb5d001b88ad904c5c732b086b596b92cfb4a4840a3abd0e35dbb6870585e4

Status: Downloaded newer image for ubuntu:latest

该命令实际上下载的就是ubuntu:latest镜像。

一般来说,镜像的latest标签意味着该镜像的内容会跟踪最新的非稳定版本而发布,内容是不稳定的。当前Ubuntu最新的发行版本为16.04,latest镜像实际上就是16.04镜像,用户可以下载ubuntu:16.04镜像并查看,两者的数字摘要值是一致的。从稳定性上考虑,不要在生产环境中忽略镜像的标签信息或使用默认的latest标记的镜像。

下载过程中可以看出,镜像文件一般由若干层(layer)组成,6c953ac5d795这样的串是层的唯一id(实际上完整的id包括256比特,由64个十六进制字符组成)。使用docker pull命令下载时会获取并输出镜像的各层信息。当不同的镜像包括相同的层时,本地仅存储层的一份内容,减小了需要的存储空间。

读者可能会想到,在使用不同的镜像仓库服务器的情况下,可能会出现镜像重名的情况。

严格地讲,镜像的仓库名称中还应该添加仓库地址(即registry,注册服务器)作为前缀,只是我们默认使用的是Docker Hub服务,该前缀可以忽略。

例如,docker pull ubuntu:14.04命令相当于docker pull registry.hub.docker.com/ubuntu:14.04命令,即从默认的注册服务器Docker Hub Registry中的ubuntu仓库来下载标记为14.04的镜像。

如果从非官方的仓库下载,则需要在仓库名称前指定完整的仓库地址。例如从网易蜂巢的镜像源来下载ubuntu:14.04镜像,可以使用如下命令,此时下载的镜像名称为hub.c.163.com/public/ubuntu:14.04:

$ docker pull hub.c.163.com/public/ubuntu:14.04

pull子命令支持的选项主要包括:

-a, --all-tags=true|false:是否获取仓库中的所有镜像,默认为否。

下载镜像到本地后,即可随时使用该镜像了,例如利用该镜像创建一个容器,在其中运行bash应用,执行ping localhost命令:

$ docker run -it ubuntu:14.04 bash

root@9c74026df12a:/# ping localhost

PING localhost (127.0.0.1) 56(84) bytes of data.

64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.058 ms

64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.023 ms

64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.018 ms

^C

--- localhost ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 1999ms

rtt min/avg/max/mdev = 0.018/0.033/0.058/0.017 ms

root@9c74026df12a:/# exit

exit

时间: 2024-12-17 14:24:59

Docker技术入门与实战(第2版)3.1 获取镜像的相关文章

《Docker技术入门与实战》——3.7 上传镜像

3.7 上传镜像 可以使用docker push命令上传镜像到仓库,默认上传到DockerHub官方仓库(需要登录),命令格式为docker push NAME[:TAG].用户在DockerHub网站注册后,即可上传自制的镜像.例如用户user上传本地的test:latest镜像,可以先添加新的标签user/test:latest,然后用docker push命令上传镜像: $ sudo docker tag test:latest user/test:latest $ sudo docker

Docker技术入门与实战(第2版).

容器技术系列 Docker技术入门与实战 第2版 杨保华 戴王剑 曹亚仑 编著 图书在版编目(CIP)数据 Docker技术入门与实战 / 杨保华,戴王剑,曹亚仑编著. -2版. -北京:机械工业出版社,2017.1 (容器技术系列) ISBN 978-7-111-55582-7 I. D- II. ①杨- ②戴- ③曹- III. Linux操作系统-程序设计 IV. TP316.85 中国版本图书馆CIP数据核字(2016)第308604号 本书从Docker基本原理开始,深入浅出地讲解Do

赞一个 kindle电子书有最新的计算机图书可买了【Docker技术入门与实战】

最近对docker这个比较感兴趣,找一个比较完整的书籍看看,在z.cn上找到了电子书,jd dangdang看来要加油啊 Docker技术入门与实战 [Kindle电子书] ~ 杨保华 戴王剑 曹亚仑 (作者) http://www.amazon.cn/Docker技术入门与实战-杨保华-戴王剑-曹亚仑/dp/B00SMJ0VFA/ref=sr_1_2?s=digital-text&ie=UTF8&qid=1435217727&sr=1-2&keywords=docker

Docker技术入门与实战(第2版)导读

前言 在一台服务器上同时运行一百个虚拟机,肯定会被认为是痴人说梦.而在一台服务器上同时运行一千个Docker容器,这已经成为现实.在计算机技术高速发展的今天,昔日的天方夜谭正在一个个变成现实. 多年的研发和运维(DevOps)经历中,笔者时常会碰到这样一个困境:用户的需求越来越多样,系统的规模越来越庞大,运行的软件越来越复杂,环境配置问题所造成的麻烦层出不穷--为了解决这些问题,开源社区推出过不少优秀的工具.这些方案虽然在某些程度上确能解决部分"燃眉之急",但是始终没有一种方案能带来&

Docker技术入门与实战(第2版)2.1 核心概念

核心概念与安装配置 本章首先介绍Docker的三大核心概念. 镜像(Image) 容器(Container) 仓库(Repository) 只有理解了这三个核心概念,才能顺利地理解Docker容器的整个生命周期. 随后,笔者将介绍如何在常见的操作系统平台上安装Docker,包括Ubuntu.CentOS.MacOS和Windows等主流操作系统平台. 2.1 核心概念 Docker的大部分操作都围绕着它的三大核心概念--镜像.容器和仓库而展开.因此,准确把握这三大核心概念对于掌握Docker技术

Docker技术入门与实战(第2版)2.2 安装Docker

2.2 安装Docker Docker在主流的操作系统和云平台上都可以使用,包括Linux操作系统(如Ubuntu.Debian.CentOS.Redhat等).MacOS操作系统和Windows操作系统,以及AWS等云平台. 用户可以访问Docker官网的Get Docker(https://www.docker.com/products/overview)页面,查看获取Docker的方式,以及Docker支持的平台类型,如图2-2所示.   图2-2 获取Docker 在Get Docker

Docker技术入门与实战(第2版)1.1 什么是Docker

初识容器与Docker 如果说主机时代大家比拼的是单个服务器物理性能(如CPU主频和内存),那么在云时代,最为看重的则是凭借虚拟化技术所构建的集群处理能力. 伴随着信息技术的飞速发展,虚拟化技术早已经广泛应用到各种关键场景中.从20世纪60年代IBM推出的大型主机虚拟化,到后来以Xen.KVM为代表的虚拟机虚拟化,再到现在以Docker为代表的容器技术,虚拟化技术自身也在不断进行创新和突破. 传统来看,虚拟化既可以通过硬件模拟来实现,也可以通过操作系统软件来实现.而容器技术则更为优雅,它充分利用

Docker技术入门与实战(第2版)3.2 查看镜像信息

3.2 查看镜像信息 1.?使用images命令列出镜像 使用docker images命令可以列出本地主机上已有镜像的基本信息. 例如,下面的命令列出了上一小节中下载的镜像信息: $ docker images REPOSITORY               TAG            IMAGE ID        CREATED         SIZE ubuntu                   16.04          2fa927b5cdd3    2 weeks ag

Docker技术入门与实战(第2版)3.6 存出和载入镜像

3.6 存出和载入镜像 用户可以使用docker save和docker load命令来存出和载入镜像. 1.?存出镜像 如果要导出镜像到本地文件,可以使用docker save命令.例如,导出本地的ubuntu: 14.04镜像为文件ubuntu_14.04.tar,如下所示: $ docker images REPOSITORY          TAG         IMAGE ID        CREATED         VIRTUAL SIZE ubuntu