阿里云容器K8s入门训练营:阿里云容器镜像服务ACR概述(一)
阿里云容器镜像服务ACR概述(一)
内容介绍:
一、容器镜像的基本概念
二、阿里云容器镜像产品介绍
三、ACR默认实例概述
四、ACR企业版和默认实例提供的规格
五、实验操作
本次课程将了解容器镜像的基本概念,以及阿里云容器镜像服务 ACL的相关产品知识。学完本次课程之后,希望大家能够了解到容器镜像,容器镜仓库,能够掌握阿里云容器镜像存储中心的操作方法和使用流程,知道容器镜像的产品功能有哪一些。
一、容器镜像的基本概念
首先我们来了解容器镜像的基本概念,这里展示了一张docker的架构图,而docker它是一个 CS 的架构.
从图中我们可以看到它是由三个部分组成,最左边的是client,也就是客户端,中间的docker host,可以理解为是docker的服务端。最右边的是docker的镜像仓库客户端,它是一个命令行的工具。服务端是一个进程,叫多个daemon,我们可以在客户端发送指令给到服务端的进程.
镜像是软件和运行环境的集合,我们在运行容器的前提是需要先加载一个镜像,将镜像交给docker daemon运行起来,它就成为了一个容器。我们的镜像仓库就是用来存放镜像的。
docker的整个工作流程就是docker客户端通过命令通知多个daemon,使用某个镜像将容器运行起来,docker daemon 就会将镜像从仓库当中取出,然后在本地运行生成一个容器。
在了解完docker的架构之后,有些同学可能对于镜像和容器之间的关系还比较模糊,docker镜像从官方来看,它是一个特殊的文件系统,除了提供容器运行时所需的程序库、资源配置等文件外,还包含了一些为运行时准备的一些配置参数。
镜像它是不包含任何动态数据的,其内容在构建之后也不会被改变。容器它是一个很简单的东西,并不难理解,就是将docker的镜像从镜像仓库当中拉取到服务器上面,然后将其运行起来,它就是一个容器。容器和镜像的关系类似于程序和进程,程序就是一串静态的代码,把这个程序运行起来,它就成为了进程。
换一个方式理解,我们在 VIM word 上面安装一个虚拟机,这个时候我们可能需要用到一个渗透 的镜像,这个镜像它是一个静态的,而当我们将这个镜像创建为一个虚拟机。再比如我们在 docker 上面拉取一个 nginx的镜像,然后我们将这个镜像通过 docker run 这个命令运行起来,它就变成了一个 nginx的服务,只不过这个服务它是自包含的,自带它的运行环境。
在学习完容器和镜像的关系之后,可能有学员又会有疑问,docker的服务端它是如何知道镜像存储在哪里,其实我们是可以通过镜像的名称来找到答案的,我们看第一个这个镜像名称,它在第一个正斜杠前面表示是镜像仓库的地址,第二个正斜杠的前面表示是镜像的路径,最后一段冒号前面的表示是镜像的名称,包括后面表示的是镜像的标签。而我们很多的云计算工程师,他在去拉取镜像的时候,他并不会将整个的名称拉下来。
它会通过这样的一个名称去拉取镜像。
MySQL:5. 6 这样的镜像名称,它其实是省略了它完整的路径,像下面这个,这里才是显示它的完整路径,只是简写为了 MySQL 5. 6 这样写它会默认地址是docker官方仓库,就是这一个地址。
而docker可能它有很多的目录,但只有 library 目录是它的公共目录,所以简写为 MySQL 5. 6,实际上是把前面的都给它省掉,因为这些都是默认的。
而ubuntu这个被简写的镜像,它是省略了路径和标签的,它的目路径默认也是一样的,它的标签默认是 lattest 的,表示是会拉取最新的镜像。如果我们是在阿里云上面去拉取镜像,那这个地址可能就要更改,这里可能是阿里云的官方地址,这里是我们阿里云容器镜像服务创建的仓库,后面则是仓库里面的镜像。
镜像仓库的主要功能是用于存放docker镜像,它实际上是通过这个docker rejistry 去提供镜像仓库服务。而docker registry 它是一个镜像仓库的软件,我们将这个软件部署在我们的服务器上面,就可以当做一个镜像仓库去使用。
一个docker registry包含多个镜像仓库,像docker的官方仓库就是一个公共的镜像仓库,私有的镜像仓库是企业和个人自己搭建的镜像仓库,具备安全和隔离性。在docker的官网上面有这样的一句话, build ship and run any APP anywhere,它的意思是容器可以构建、传输以及在任意的地方运行任意的应用。
build 是构建镜像,会将应用文件以及运行的环境构成一个镜,所以这里讲的镜像就像是集装箱,包括文件以及运行环境等的资源。
ship是传输镜像,镜像的传输是依赖于镜像仓库的,镜像的拉取并不是在主机与主机之间运输的,而是在仓库和主机之间运输,我们在获取镜像的时候只能从仓库里面获取,我们要存储镜像的时候也只能将镜像上传到我们的仓库,并不能一台服务器将一个镜像传递到另外一台服务器上。
所以主机和仓库间运输,这里的仓库就像是超级码头, run 运行镜像,我们将镜像在另外一个地方运行起来,那么它就是一个容器,容器就是运行程序的地方。
二、阿里云容器镜像产品介绍
阿里云的容器镜像服务ACR,可以简单的把它理解为是语音上的一个容器镜像仓库,但严格意义它又不仅仅只是一个容器的镜像仓库。
阿里云的ACR,它是一项云原生的容器镜像管理服务,可以为用户提供完善的容器镜像生命周期的管理,也就是你可以在阿里云的容器镜像服务的控制台去管理容积镜像,去删除容积镜像,同时它还可以提供一些安全保障,比如这里像这个安全扫描还可以做操作审计,还可以支持网络的访问控制。
同时还可以和阿里云的其他云产品联合使用。比如全球加速,可以让我们的镜像进行一个高效的分发,通过云端这种加速服务提高镜像的下载速度,这个是一般的镜像仓库解决不了的。
在使用阿里云的容器镜像仓库的时候,我们还可以将我们的仓库设为私有或者公开,如果设为私有是能够很好的保障我们镜像的安全性的,所以综合来说它提供了一个多维度的安全保障。
在应用交付方面,它可以帮助我们的用户快速去构建一个高质量或者说安全的容器镜像,这样可以帮助我们的应用开发人员以及运维的人员进行一个有效的支持。
最后就是可以和我们的云产品进行一个无缝的集成,我们后面的实验就会跟大家进行演示,我们在阿里云上面通过镜像仓库去拉取镜像,然后将这个镜像在 ASK 上面去运行为一个应用,能够被其他的用户所访问到。
不仅仅是ASK, ACK 照样可以。就比如你要部署一个魔方的游戏,自己可能要获取到这个游戏的代码,还要在服务器或者主机上面部署相应的环境,比如要部署 http d 提供 Web 服务等,这个整套流程下来是比较麻烦的。
但是在阿里云上面,比如你有一个魔方的这样的一个镜像文件,可以直接在 ASK 上面提取到你的这个镜像文件,然后直接运行成功,很快就会部署下来,整个过程不会超过 3 分钟,是非常方便的。