说明
这是 深入浅出docker 一书的学习笔记。
作用
1.硬件机器
CPU 操作系统 驱动程序2.虚拟机
各个组成部分和组件,和硬件机器一模一样,唯一的不同就是使用软件和内存模拟出来的。3.容器
不是虚拟机!之所以会诞生容器,就是要解决虚拟机需要一整套操作系统和驱动程序等等所有相关的组件。
容器全都不需要,因为容器是共用同一个虚拟机!
我们只是想用最小的磁盘空间,部署一个新的程序,而不是重新创建一个操作系统。
说白了,容器,就是在同一个虚拟机部署多个容器,每个容器部署应用程序。
与虚拟机的区别?
包括各个组成部分吗?不包含。
虚拟机是基于硬件。
容器是基于操作系统。基于硬件,说明有多个操作系统,每个虚拟机创建自己的操作系统。
基于操作系统,说明容器共用一个操作系统。而,创建新的操作系统是极其地耗费资源,一台物理机器就只能创建有限的个位数的虚拟机。
但是,容器,可以成百上千的跑在同一个操作系统。
(插入架构图)
既然容器是跑在同一个操作系统,那为什么不要容器呢?因为一个操作系统本来就是跑了很多个程序的! 容器可以隔离。
应用程序的容器化?为什么要容器话?隔离?到底是隔离什么?具体怎么隔离? 重在隔离?到底隔离了什么?如何隔离?
安装
和安装一个普通程序,没什么差别。
步骤
1.安装 2.检查是否安装成功 看版本linux或windows平台
mac
是模拟linux,相当于是在mac上同时安装了linux内核(最小的微内核) + docker。浏览器模拟运行
直接在浏览器模拟操作即可,是一样的。主要是为了,理解原理,即可。怎么部署应用程序到容器?
怎么运维?即直接把整个容器+部署在里面的应用程序 一起copy即可?
组件
包含
1.引擎 2.镜像 3.容器各个组件的区别?
1.引擎 2.镜像 就是还没有运行的容器。类似于还没创建对象的类。 3.容器 就是镜像启动之后的一个实例。容器
包含
1.服务器 2.客户端 相当于是命令行,访问服务器部署程序到容器
比如
1.普通应用程序 2.tomcat之类的web服务器如何部署
1.docker容器本身也是依靠命令启动 2.启动docker里的程序,也是随docker容器一起启动即可,都是在命令行启动 格式是:启动docker 程序 port应用容器化
容器诞生的目的,就是为了应用的容器化,容器化=隔离。 隔离之后,方便运维。
应用 + 容器 =镜像。
每次部署上线,就是启动镜像,也就是实例了一个镜像的实例——容器。
通过中介dockerfile
流程 1.编写应用程序代码 2.dockerfile 3.打包构建镜像 4.启动镜像,实例化一个容器对象dockerfile
是什么
1.描述应用程序 2.是容器化的中介文件作用
使用步骤
镜像仓库
存储镜像。相当于是源码仓库-svn,jar仓库-maven。
多阶段构建
解决容器太大的问题。因为容器的目标就是越小越好,只需要能把应用程序跑起来的最小依赖包就够了。
单引擎部署多个容器
使用docker compose/stack组件模块
具体操作步骤和方法
容器集群和管理容器
使用docker swarm
具体使用步骤和方法
容器集群
容器集群组件管理多个容器节点,形成集群。管理容器
也叫编排,这破名字。 kubernate也是用于管理docker容器。网络
容器和容器之间通信。
覆盖网络
都是解决不同容器之间通信的问题。 具体解决方法是,通过计算机网络方面的技术。存储数据
1.非持久化 2.持久化
持久化
存储在docker卷。数据种类 1.块数据 2. 3.对象
安全
1.linux安全
2.docker安全demo
第一本docker书(修订版),有个章节,专门讲了java demo例子。
参考
深入浅出docker