Docker(4)加速拉取镜像到本地----用阿里云

1.为什么要使用阿里云的镜像加速器?

构建容器的镜像全部在下面这个网站里面,但是这个站点在国外,对于我们来说使用很不方便,下载非常慢
国内的阿里云上有自己已经拉取过来的镜像可以供我们直接使用
但是如果我们使用的镜像aliyun上面没有,那么我们也可以借助阿里云镜像加速器来拉取镜像
在这里插入图片描述
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:

Azure 中国镜像 https://dockerhub.azk8s.cn
阿里云加速器(需登录账号获取)
七牛云加速器 https://reg-mirror.qiniu.com
清华大学开源软件镜像站

2. docker的三大概念:镜像、容器和仓库,这里聊一下镜像

什么是Docker镜像?
Docker镜像是由文件系统叠加而成,最低端是一个文件引导系统,即bootfs.Docker用户不会与引导文件系统有直接的交互。
Docker镜像的第二层是root文件系统rootfs,通常是一种或多种操作系统,例如ubuutu等。
在Docker中,文件系统永远都是只读的,在每次修改中,都是进行拷贝叠加从而形成最最终的文件系统,Docker称这样的文件为镜像。
一个镜像可以迭代在另一镜像的顶部。位于下方的镜像称之为父镜像,最底层的镜像称之为基础镜像。
最后,当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器。

首先什么是写时复制
在这里插入图片描述
Docker的这种机制我们称之为写时复制。
镜像是用来创建容器的,是容器的只读模板,默认可以从docker hub上下载。

docker  search  #查询镜像
docker pull  #拉取镜像
docker  push #推送镜像

 

镜像默认可以从docker hub上面下载,这是docker官方的公共仓库
为我们免费提供了大量已经容器化的应用镜像,避免我们重复的去造轮子
但是官方并没有在国内部署服务器,如果你不走vpn的话真的是太慢了,报错和超时让人非常的郁闷。
我们可以使用阿里云进行镜像加速直接下载镜像
docker的镜像是增量修改,每次创建新的镜像都会在父镜像上构建一个增量的层,基于AUFS技术

Aufs是Another Union File System的缩写,支持将多个目录挂载到同一个虚拟目录下。

已构建的镜像会设置成只读模式,read-write写操作是在read-only上的一种增量操作,固不影响read-only层。
这个研究有一个好处,比如我们现在可以看到手机里面的APP,在命令里面都会用APP字段下回来,在下回来之前它就是一个静态的,
我们没有往里面写东西,但是我们启动起来以后,我们就可以往里面写东西,进行各种各样的操作。
但是如果我们把它关掉了以后,或者删除了以后,它的这个镜像是存在远端的,所以在这个镜像里面是不会去修改的。
并且这样也会有一个非常好的地方,这个场景非常适合我们去实现测试环境,因为我们的测试环境经常会有一个操作就是灌数据,
我们可以提前把这个镜像数据打包到测试里面,那么这个镜像软件里面包含了,最上面是nginx,
比如它里面会有一些数据,我们可以在往上面打一层数据,打完之后把它起成一个容器就可以去测试,
测试完之后这个容器里面会生成各种各样的数据,也就是脏数据,这样的话,我们就可以把这个容器删掉,
删掉以后我们镜像里面的容器是不会受影响的。
如果说它想再创建一套,我们可以把这个镜像再启一个容器,就可以是一个一模一样的,并且是一个干净的环境。

3.如何通过阿里云的镜像加速器快速拉取镜像到本地?

具体的过程如下:
(1)我们可以进入阿里云的页面注册一个账号
在浏览器里面输入aliyun.com—>点击免费注册
在这里插入图片描述
在这里插入图片描述

(2)注册成功之后
点击控制台——>产品与服务——>弹性计算——>容器镜像管理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置仓库的密码
在这里插入图片描述
看到自己专有的镜像加速器:
在这里插入图片描述
在这里插入图片描述
(3)根据官方文档进行 配置镜像加速器

[root@server1 ~]# cd /etc/docker/
[root@server1 docker]# ls
key.json 
[root@server1 docker]# vim daemon.json
[root@server1 docker]# cat daemon.json 
{
  "registry-mirrors": ["https://udrq07am.mirror.aliyuncs.com"]
}
[root@server1 docker]# systemctl daemon-reload
[root@server1 docker]# systemctl restart docker

 

进入docker的配置目录,编辑镜像加速器文件
在这里插入图片描述
在这里插入图片描述
重启服务
在这里插入图片描述
(4)此时虚拟机server1需要上网,因此开启真机的防火墙的伪装功能和内核路由功能
在这里插入图片描述
#永久性的设置路由转换
在这里插入图片描述
这是临时设置路由转化,是为了之后的实验而设置的
在这里插入图片描述
#(5)在server上做解析和设置网关,就可以看到server1能上网
在这里插入图片描述
在这里插入图片描述
(6)docker pull nginx 通过阿里云的镜像加速器拉取nginx镜像,直接保证联网的状态进行下载即可

[root@server1 ~]# ls
game2048.tar  k8s-v1.15.0  kube-flannel.yml
[root@server1 ~]# docker load -i game2048.tar   #导入镜像
011b303988d2: Loading layer   5.05MB/5.05MB
36e9226e74f8: Loading layer  51.46MB/51.46MB
192e9fad2abc: Loading layer  3.584kB/3.584kB
6d7504772167: Loading layer  4.608kB/4.608kB
88fca8ae768a: Loading layer  629.8kB/629.8kB
Loaded image: game2048:latest
[root@server1 ~]# systemctl start  docker
[root@server1 ~]# systemctl enable  docker
[root@server1 ~]# docker pull nginx  #将nginx镜像拉取下来
[root@server1 ~]# docker images  #查看镜像
[root@server1 ~]# docker  history nginx:latest   #查看nginx镜像的创建历史
[root@server1 ~]# docker  inspect nginx:latest   #获取nginx镜像的元数据

在这里插入图片描述
可以看到拉取的速度非常快,而且还是最新版的
在这里插入图片描述

在这里插入图片描述
##查看nginx镜像的创建历史并且查看镜像的版本信息
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

发布了124 篇原创文章 · 获赞 18 · 访问量 3105

猜你喜欢

转载自blog.csdn.net/weixin_42221657/article/details/102992826
今日推荐