头歌—Docker企业级实训—第二关拉取镜像

任务描述

在没有使用Docker之前,如果我们要准备一个ubuntu的运行环境,那么首先我们得安装一个ubuntu的系统,多么麻烦,多么耗时啊!!而使用Docker之后,只需要从Docker Hub中拉取一个ubuntu镜像,基于该ubuntu镜像启动一个容器,就可以在容器中做任何在ubuntu系统中做的事情,整个过程大约2-3分钟,而且主要的时间是用于下载镜像!是不是非常方便呢?

本关的任务是学习准备一个容器的运行环境,更准确的说,应该是拉取一个具备某个运行环境的镜像,要求学习者参照示例完成“从Docker Hub中拉取一个busybox:1.27镜像”的功能。

相关知识

在Docker的官方镜像仓库Docker Hub中保存了各种各样的镜像,这些镜像中保存了各种各样的运行环境。例如包含Linux运行环境的“ubuntu”镜像、“centos”镜像、“busybox”镜像等,提供数据库服务的“mysql”镜像、“o\fracle”镜像、“redis”镜像等。提供程序运行环境的“java”镜像、“python”镜像、“c++”镜像等等。基本上我们日常工作所需要的运行环境在Docker Hub中都会有对应的镜像(Docker Hub官网:https://hub.docker.com/ )(这些镜像不是凭空出现的,这是镜像构建者们辛勤的劳动成果。每一个Docker的使用者都应该感谢这些镜像构建者们!!)

但是在安装完Docker之后,本地是没有任何镜像的。下面介绍如何从Docker Hub中拉取镜像(或者说下载镜像)。

获取镜像

默认情况下,使用docker pull命令,会从官方的Docker Hub库中将镜像拉取到本地。

首先介绍这条命令的格式:

docker pull [OPTIONS] <仓库名>:<标签>

其中,

docker pull:Docker拉取镜像的命令关键词;
[OPTIONS]:命令选项;
仓库名:仓库名的格式一般为==<用户名>/<软件名>。对于Docker Hub==,如果不指定用户名,则默认为library,即官方镜像;
标签:标签是区分镜像不同版本的一个重要参数,<仓库名>:<标签>会唯一确定一个镜像。默认为latest
例如,我们要从Docker Hub官方仓库拉取一个Ubuntu 14.04的官方镜像,其语句如下:

docker pull ubuntu:14.04

docker pull命令背后的工作

首先,如果tag值为空,即没有指定标签,就会使用默认tag,也就是latest,如果tag值不为空,就使用指定的tag。

然后,默认情况下,会在Docker Hub中寻找名为“repoName”的仓库,如果仓库不存在,返回错误信息。如果仓库存在,就从仓库中拉取对应tag的镜像。例如:如果执行docker pull ubuntu:14.04,那么将从“ubuntu”仓库中拉取tag为14.04的镜像,而如果执行docker pull ubuntu,会从“ubuntu”仓库中拉取tag为latest的镜像。
(在Docker Hub中有很多个镜像仓库,一般情况下会将同一类型的镜像放在同一个仓库中,例如在一个ubuntu仓库中由很多个ubuntu镜像组成,包括ubuntu:14.04、ubuntu:16.04、ubuntu:latest等等镜像)。

最后,将拉取的镜像存储到本地的指定位置。

docker pull的两个基本实例

执行docker pull ubuntu之后,会有下面的执行结果。(执行命令之前,本地并不存在ubuntu:latest镜像)。

如下图所示,因为没有显示地指定tag,所以就使用默认tag,也就是latest。于是会在Docker Hub中从ubuntu仓库中拉取ubuntu:latest镜像,当将镜像一层层下载完成后,存储到本地。

  1. [root@localhost Desktop]# docker pull ubuntu
  2. Using default tag: latest
  3. latest: Pulling from library/ubuntu
  4. e0a742c2abfd: Pull complete
  5. 486cb8339a27: Pull complete
  6. dc6f0d824617: Pull complete
  7. 4f7a5649a30e: Pull complete
  8. 672363445ad2: Pull complete
  9. Digest:
  10. sha256:84c334414e2bfdcae99509a6add166bbb4fa4041dc3fa6af08046a66fed3005f
  11. Status: Downloaded newer image for ubuntu:latest
  12. [root@localhost Desktop]#

那从Docker Hub中拉取一个不存在的镜像会怎么样呢?如下所示,执行docker pull aaa后,会在Docker Hub中查找aaa仓库,由于不存在aaa仓库,所以没有找到,返回了错误信息。

  1. [root@localhost Desktop]# docker pull aaa
  2. Using default tag: latest
  3. Error response from daemon: repository aaa not found: does not exist
    or no pull access

设置镜像加速器

由于“伟大的墙”的原因,在国内从Docker Hub中拉取镜像的速度可能会比较慢,国内很多云服务商都提供了镜像加速器服务,例如阿里、网易等等。

以Linux系统配置阿里云加速器为例,只需要将下面的命令复制到Linux的终端,以root用户的身份执行之后,就成功的配置了阿里云加速器了!

  1. #以root用户执行以下操作
  2. mkdir -p /etc/docker
  3. tee /etc/docker/daemon.json <<-‘EOF’
  4. {#下面的URL可以替换为你自己的阿里云加速地址
  5. “registry-mirrors”: ["https://jxus37ad.mirror.aliyuncs.com "]
  6. }
  7. EOF
  8. systemctl daemon-reload
  9. systemctl restart docker
    在这里插入图片描述
    输入:
    在这里插入图片描述
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大学生的计算机笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值