Docker基本原理串讲思路
前言
好久没有进行博客的更新了,也没有太多的时间去学习新的知识并进行整理发文,前些天对公司同时进行了一些关于Docker基本原理的串讲,期间进行了Docker知识的整理,更多的是一些思路,就发上来,希望大家如果有docker串讲的时候能够对大家有所帮助。
Docker技术围绕讲解讲解思路
更多的是我们要围绕那一方面去讲
- 理念 ----提出有疑问 —>在接下来的过程中一一解答
- Docker基本架构,原理
- 为什么要学docker
- Docker基本介绍
- 以及利用docker可以解决什么问题
- Docker命令及使用方法 ----docker命令进行详细讲解以及可以达到的效果,dockerfile文档展示讲解
- Docker命令
- Dockerfile
- 学习了Docker可以达到什么效果
- 举例展示
- 什么场景使用,如何用
沙盒(英语:sandbox,又译为沙箱),计算机专业术语,在计算机安全领域中是一种安全机制,为运行中的程序提供的隔离环境。通常是作为一些来源不可信、具破坏力或无法判定程序意图的程序提供实验之用。
容器Docker技术讲解思路
- 开始进行Docker技术的解析
物理机—>虚拟机—>容器
- 首先从基本介绍开始讲解
-
Docker技术的优缺点
-
传统虚拟化的优缺点
举例! lnmp架构 {例如有一台虚拟机80C60G 部署lnmp架构 一个nginx占用80端口 那么这台虚拟机的资源是否就是被浪费? 如果mysql采用主从架构,nginx采用高可用高并发架构一台服务器或者一台虚拟机能够能够支撑
Docker内容整理
-
什么是docker?
总结:一个开源的应用容器引擎,将应用程序部署为可移植,自给自足的容器,在云端或本地运行 -
docker的作用和好处
提供产品和项目的开发提供所需的不同测试环境
可以将项目和环境一起打包成镜像从而解决环境不一致的一个问题
好处:
- 运行环境的一致性
- 高效利用资源
- 启动速度快
- 便于开发,维护和更新
- Docker与虚拟机对比
虚拟机搭建:
主机的基础架构–>主机操作系统–>虚拟机的监控软件—>虚拟机的操作系统—>应用程序和依赖项
导致会占用更多的内存和CPU
容器 :
主机的基础架构->主机操作系统–>容器引擎—>应用程序和依赖项 容器就可以保证容器的一个相互隔离,共享主机的一个操作系统服务
容器并没有去模拟一个操作系统,会节省更多资源 虽然共享操作系统内核,但是进程还是独立运行的
资源利用少 ----> 导致运行速度更快,部署更多(秒级启动) 相比虚拟机分钟级 运行更多服务降低开发成本
- Docker的基本组成
- Docker client 客户端
- Docker server 服务器 接收请求,将请求反馈给客户端
- Docker images 镜像 比喻:相当于印刷机模板,通过模板得到更的印刷件
- Docker containers 容器
- Docker repository 仓库 公有/私有仓库 docker hub
- Atomic host 原子主机
- Docker镜像加载原理
联合文件系统
镜像中有三层镜像系统,但从外面看只能看到一个镜像系统(全部三层镜像的合并试图)
第三层 7 镜像
第二层 456
第一层 123 —> 1234567 全部三层镜像的合并视图进行叠加
- Docker镜像加载原理
系统启动引导的一个加载过程
docker镜像最底层是一个bootfs 和典型的Linux系统一样 最底层为bootfs bootfs包括bootloader(加载器)和kernal内核,bootloader引导加载内核kernel到内存中 当Linux刚启动时最先启动bootfs 当系统加载完毕后就会被卸载 因为要开启要启动启动内核所以时间很久 因为容器的内核是使用的宿主机的内核,因为宿主机已经启动了内核所以不需要再进行启动,速度就会非常快
Rootfs 包含典型的文件 例如/etc /bin 这个文件系统代表了不同的操作系统的发行版 比如ubant,深度等等 对于不同Linux发行版来说,他们的内核都是相同的,都是Linux内核,所以都可以用到bootfs os很小
启动完成之后,所用的docker镜像都是基于一个基础镜像 base image
因为容器和主机共用一个内核,所以只需要提供一个很小的rootfs就可以了
- Docker工作原理
docker客户端通过docker命令就可以在docker_host上进行docker的管理 例如创建镜像,删除镜像,拉取镜像,运行容器等。 - Docker安装
不详聊
实例:
以 Centos7.4 安装为例、默认使用 root 权限;
1、更新操作系统内核
yum update –y
2、安装Docker yum 源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly
3、安装Docker
yum install docker-ce docker-ce-cli containerd.io
4、启动 Docker
systemctl enable docker && systemctl start docker
5、查看 Docker 状态
docker info