目录
背景
以linux而言,linux操作系统会有一个主进程pid=1 派生出其他进程来控制不同服务
例如: pid=2 --> python pid=3-->java pid4-->php ,三个服务可能会相互影响使用者期望将这三个不同的服务,跑在不同的运行时环境中实现相互不影响,同时不会增加服务器成本延伸出—》能否将这三种服务分别封装起来——》KVw虚拟化技术,实现了一个操作系统模拟多个操作系统/不同的运行时环境随着技术发展---》虚拟化技术开销较大(例如:只要运行一个py脚本,想要使用虚拟化方式实现,还需要安装一个操作系统,并不方便/合理)
——》延伸出容器技术
虚拟化层的抽象层(用户层)剥离,使用docker engine来替代(来宾操作系统去除),只要通过引擎就可以直接连接到宿主机操作系统中,极大减小了开销
一、docker是什么
Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。是一个开源的应用容器引擎,让开发者可以打包大门的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
沙箱(Sandbox):在计算机安全领域,沙箱是一种程序的隔离运行机制Docker在2013年一炮而红,直到现在,已经成为容器技术的代名词。Docker 从一开始就以提供标准化的运行时环境为目标,真正做到"build once, run anywhere",可以将同一个构建版本用于开发、测试、预发布、生产等任何环境,并且做到了与底层操作系统的解耦。在此基础上还进一步发展出了caas(容器即服务)技术。
企业中,开发——》运维整体流程
①首先由开发进行代码研发,研发好之后进行编译、打包
Ps:打包:一般会使用maven工具打war工具打war或者jar包
②打完包之后,放置对应的运行时环境中,进行试运行
Ps:这里的运行时环境指:例如tomcat(Java环境)PHP(php环境)等
③中间会加上一些测试过程,测试代码的有效性、可用性和执行性
④以上测试完成,运维会将这个软件包拉过来,运行在实际生产的运行时环境中
问题:在以上的第②点中,不同开发语言的运行时环境混淆在一起运行会有很大的隐患,以及不便
传统中所谓的运行时环境,例如tomcat(Java环境)PHP(PHP环境)等
容器中所谓的运行时环境,指的试“容器”内部
在此之前,容器——》是一个运行时环境,构成容器的组件是image镜像
1、docker三要素
Docker images :镜像