目录:
(1)初始Docker-什么是Docker
(2)Docker和虚拟机的差别?
(3)Docker架构?
(4) Docker的安装
(5)镜像命令
(6)镜像命令的练习
(1)初始Docker-什么是Docker
在微服务中有一个令人头疼的问题,就是部署问题,因为微服务非常的多部署起来很麻烦,所以需要学习Docker技术,解决部署难题
在打包应用程序时,会基于操作系统打包,比如说应用是ubantu版本的,它的依赖和函数库也是ubantu版本的,你把打包好的程序放到CenTOs上 ,它能运行吗?不能的
所有Linux的系统可以分为两层,一层是内核,不同的是上层的系统应用不同
Docker将用户程序应用自己的依赖跟系统函数库一起打包 打包成一个整体,这样放到任何的Linux系统上,只要内核是相同的,在执行的时候调用它打包好的函数库,这个函数库调用操作系统的内核,内核直接访问硬件,这样就解决了跨系统问题了,可以理解为Docker打包好的程序包可以运行在任何Linux内核的系统上
(2)Docker和虚拟机的差别?
Docker可以实现不同的应用可以在不同的操作系统上去运行,虚拟机也可以达到类似的效果,他们两个的区别?
Docker会把应用所需要的依赖、函数库、甚至于操作系统函数库一起打包,那么应用运行时可以调用本地函数库,然后与操作系统的内核Linux内核交互,这样实现跨系统运行,执行性能高
虚拟机:是在一个系统运行另外一个系统,Hypervisor技术可以模拟出各种计算机的各种硬件CPU、内存等等 ,在模拟的计算机上就可以安装你想要的操作系统了,就可以安装你想要的任何依赖啊函数库啊应用啊,这样就可以实现跨系统应用部署,虚拟机是在一个系统装了另外的系统,因此应用运行时会以为在真实的系统上,会先调用内置的系统再与Hypervisor交互,然后再把信息传给外部系统,然后再调用计算机硬件,经过了层层的传递,性能较差一点
(3)Docker架构?
Docker架构中有两个重要的概念:
镜像可以理解为硬盘中的文件。
容器可以理解为把应用跑起来,形成的进程就是容器,容器还需要做隔离,可以看成小盒子,会有独立的CPU资源,内存资源甚至还有独立的文件系统,在这个盒子内运行的进行它会以为自己是唯一的进程,从而起到隔离效果
容器不能从镜像中写数据,它会把data复制一份,写在自己的data里,不会对镜像有影响
镜像托管: 可以把镜像传到镜像托管平台
docker build:构建一个镜像 客户端发起这个命令会被Docker服务端的守护进程,构建镜像
docker pull:客户端发起这个命令会被Docker服务端的守护进程,守护进程会从Registry中拉取镜像 ,然后运行镜像创建容器
docker run:会告诉服务端创建容器
虽然我们可以自己构建镜像,但是想这些Redis、MySql、nginx直接使用官方镜像,只有自己的微服务需要自己构建
(4) Docker的安装
启动Docker:
查看是否启动成功:
查看是否写入:
(5)镜像命令
通过输入:查看命令:
查看image的用法命令:
输入命令:
使用命令查看镜像:
查看一下帮助文档:
演示导入镜像:上删除nginx镜像:
查看就没有镜像了:
查看load命令的用法:
(6)镜像命令的练习
输入拉取命令:
查看本地镜像:
打包命令:
删除镜像:
再次查看镜像:
加载命令:
在次查看: