10-Docker安装与配置镜像
作者:互联网
简介
微服务架构中,服务会比较多,并且所依赖的环境会比较多。不同的应用装在Linux系统中还要依赖底层依赖库,不同的操作系统所依赖的库不同,这就导致环境出现部署难题。
在单一服务器上进行服务部署之后,原样在其他Linux发行版系统或者其他平台部署时也会出现差异:
Docker将每个环境所依赖的库都单独进行整合依赖,并且各个服务之间所以来的库相互隔离不会冲突。
这只是解决了一个平台中环境依赖的问题,如果在不同操作系统中解决依赖问题就要考虑操作系统的原理:
所有Linux系统应用都是基于内核组装来完成的,也就是用户是面向不同的系统应用,而内核都是Linux:
那所谓的不能跨系统运行,大多是因为系统应用所提供的可调用函数库不同导致的:
Docker为解决操作系统不同的问题,将系统函数库也进行了打包,也就说每个依赖中包含依赖库和系统函数库和依赖本身,实际允许的时候,依赖直接调用Linux内核,就屏蔽了系统应用的差别。
Docker与虚拟机的区别
虚拟机是在一个真实的操作系统中借助Hypervisor技术模拟计算机硬件,在此技术之上安装虚拟的操作系统,在操作系统中进行软件安装的时候,软件是直接安装到了它认为真实的操作系统中。
这与Docker不同,Docker是将软件/所需依赖/系统函数库进行打包,然后运行在Docker环境中,而并非虚拟操作系统中。
Docker方式是直接借助系统函数库对Linux系统进行交互,而虚拟机是要通过Hypervisor与真实操作系统交互,然后获取硬件信息后返回,效率会比Docker慢一些。
因为Docker是与操作系统直接沟通,所以更接近直接安装到操作系统中的软件,效率更高。
Docker包中是软件内容和系统函数库,内容比一个虚拟的操作系统小多的。
再进行Docker应用启动的时候,实际上是启动了一个软件而已,而虚拟机是启动了一个操作系统,效率没有Docker快。
Docker架构
Docker中,镜像就是软件+依赖库,也就是一个一个的文件,镜像下载后可以多次启动,每次启动都将创建一个容器。容器之间是隔离的,镜像也都是只读的,不能进行任何读写操作。
例如数据库,数据库存储数据的时候会以文件系统的方式进行存储,那就会污染镜像文件,并且镜像的文件都是只读的,所以每个容器都会复制自己需要的镜像中的内容进行单独使用,从而数据也做到了隔离。
对镜像的分享要通过Dockerhub,镜像托管平台,开发人员可以自己构建镜像然后上传到云端供下载,当然可以搭建内部私有的Docker环境进行使用:
Docker中可以通过build进行镜像构建,一般是定制的nginx或者微服务项目构建成镜像,然后还有pull可以从远端拉取镜像,远端镜像主要是数据库什么的官网镜像可以直接使用,然后通过多次的run开启多个容器,实现镜像内应用的启动:
安装Docker
斜杠表示指令换行。
在线安装将镜像源调整到国内:
安装:
-y表示确认安装过程中出现的一切询问。
启动Docker对防火墙有所要求,测试过程中要关闭防火墙,但生产环境中不要这么做。
systemctl status firewalld可以查看防火墙状态。dead表示关闭状态。
systemctl start docker表示启动Docker服务。
systemctl status docker表示查看Docker服务状态。
使用Docker -v可以查看Docker信息,只要此指令可以正常执行就表示Docker启动完成。
镜像加速进行修改:
使用阿里给出的文档可以进行配置镜像加速。
标签:10,依赖,操作系统,Linux,镜像,Docker,函数库 来源: https://www.cnblogs.com/agoodjavaboy/p/16413295.html