本学习笔记为阿里云天池龙珠计划Docker训练营的学习内容,学习链接为:https://tianchi.aliyun.com/specials/activity/promotion/aicampdocker
一.学习知识点概要
1.docker的定义:
docker是承上启下的桥梁作用,它可以将App连带环境一同打包直接部署到服务器上。
2. docker与虚拟机的区别:
docker直接寄存在宿主机上。它是一个黑盒的进程,可以独立出一个自己的空间,不会使得在docker中的行为以及变量溢出到宿主机上。
3. docker的优点:
我们不但可以使用一个空的镜像,从头开始构建,还可以使用之前已经build好的镜像,直接使用。而且在项目需要迁移的时候,我们只需要在需要部署的地方,直接使用之前项目使用的docker放置好自己的项目即可,方便快捷。
4.docker底层技术支持:
NameSpaces:用于做进程之间的隔离
Control Groups: 用于做资源控制,根据需求划分资源的核心数,内存,硬盘等
Union file systems:Container和image的分层
5.docker的基本概念:
docker最重要的三个概念是:镜像,容器,仓库,其中镜像是最重要的概念。
二.学习内容:
docker作为虚拟机领域成熟的轻量化容器产品,可以轻松的将代码和所依赖的整个环境(可以理解为包含整个操作系统)都打包在一起,不依赖于软件环境,方便把自己的代码从windows电脑分享到mac电脑运行、或者服务器上运行等。 docker三要素:镜像(image)、容器(contarin)、registry(包含多个仓库)
1.镜像
- 镜像是文件与meta data的集合
- 分层的,并且每一层都可以添加删除文件,从而形成新的镜像
- 不同的镜像可以共享相同的层(layout)
- 只读的
镜像可以理解为树状结构,每一个镜像都会依赖于另一个镜像,这个依赖关系是体现在docker镜像制作的dockerfile中的FROM指令中的。如果要是树的根,那么我们需要"FROM scratch",这个是值得注意的。
2.容器
- 通过image创建
- 在image 的最后一层上面再添加一层,这一层比较特殊,可读写。
- image负责存储和分发,container负责运行
容器是镜像的一个运行实例,可以不准确的把镜像当作类,容器当作对象。容器其实他的结构是与镜像相类似的,底部也是一层层的只读层,只不过在最上层会存在一个存储层,我们可以在这一层定制化我们的这个容器,还可以通过build命令,把容器打包成我们自己需要的镜像。另外镜像启动后会形成一个容器,容器在计算机中是一个进程,但这个进程对其他进程并不可见。
3.仓库
这个理解起来就很简单了,大家应该有使用过git,他是有一个远程的仓库,这个仓库记录着我们的代码,和每一次我们提交的记录。但是在这里,把docker的仓库比做maven仓库更加恰当,就相当于我们可以去maven远程仓库取我们需要的依赖,多个依赖构成了我们的整个项目,这个思想同样适用于docker。默认情况下,我们都是从docker hub中取得的镜像。
三.学习问题与解答:
1.学习问题:
不理解maven仓库的定义
2.问题解答:
向老师求助后,明白了Maven仓库就是放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,节省磁盘资源。
四.学习思考与总结
Task01:docker基础知识。使我明白了docker的镜像,容器,仓库的相关概念,对docker有了初步的了解。下一步将准备安装docker,学习docker的基本命令 。
本文来源:https://developer.aliyun.com/article/734130