Docker原理及简单使用
参考了网上的一些内容:javaGuide等
目录
- 容器相关概念
- 什么是容器
- 容器概念
- 物理机、虚拟机和容器的差异
- 什么是docker
- 概念
- 特点
- 容器和虚拟机的对比
- docker基本概念
- 镜像(Image):特殊的文件系统
- 容器(Container):镜像运行的实体
- 仓库(Repository):镜像存储文件的地方
- docker底层原理
- 虚拟化技术
- docker基于LXC虚拟容器技术
容器相关概念
什么是容器
容器概念
将软件打包成标准单元,用于开发、交付和部署
- 容器镜像是轻量的、可执行的独立软件包
- 在任何环境都可以始终如一的运行(Windows、Linux)
- 容器赋予了软件独立性,有助于避免环境配置差异和不同人员软件版本对开发过程的影响
物理机、虚拟机和容器的差异
物理机就是个人电脑,资源是完全相互独立的
虚拟机是虚拟一套硬件,在硬件之上运行完整的操作系统,共享物理机的硬件资源
容器是虚拟化的操作系统,而非硬件,容器之间共享同一操作系统的资源,隔离性比虚拟机低
物理机:
虚拟机:
容器:
什么是docker
概念
- 软件容器平台
- 利用Go开发,基于CGroup功能和namespace实现,对进程进行了封装隔离,属于操作系统层面的虚拟化技术
- 可自动执行重复化任务
- 用户可以方便的创建和使用容器,把自己的应用放入容器。还可以进行版本管理、复制、分享、修改
特点
- 一致性运行环境:确保应用环境一致性
- 更快的启动时间
- 隔离性
- 弹性扩展:能够处理集中爆发的服务器压力
- 迁移方便
- 持续交付和部署
容器和虚拟机的对比
简单来说,容器和虚拟机都是通过对资源的虚拟化实现隔离和分配的,但功能有所不同,容器虚拟化的是操作系统而虚拟机虚拟化的是硬件,因此,容器的隔离级别稍低,但可移植性更高
- 虚拟机是虚拟化一套硬件之后,在其上运行完整的操作系统,在该系统内运行所需应用进程,适用于将单服务器通过隔离变成多服务器,隔离不同用户
- 容器内的应用进程直接运行在宿主内核上(用户空间),容器没有自己的内核,容器相对来讲更轻便
docker基本概念
docker主要有三个基本概念:
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
镜像(Image):特殊的文件系统
操作系统分为内核和用户态,内核启动后,会挂载root文件系统挂在用户空间支持。
Docker中的镜像(Image)就相当于是root文件系统
docker镜像是一个特殊的文件系统,除了提供容器运行时的程序、库、资源、配置等文件外,还包括运行时准备的一些配置参数(匿名卷、环境变量、用户等)。
镜像不包含任何动态数据,其内容构建之后也不会改变
docker的镜像利用了Union FS技术,采用分层存储架构,因此镜像实际上是由多层文件系统联合组成
镜像构建时,一层一层构建,前一层是后一层的基础,每层构建完之后就不在改变,后一层的任何改变都只发生在自己的层上。
容器(Container):镜像运行的实体
容器是镜像运行的实体,可以被创建、运行、暂停、删除等
属于自己独立的namespace
仓库(Repository):镜像存储文件的地方
存储和分发镜像的服务
docker底层原理
虚拟化技术
虚拟化技术是一种资源管理技术,通过对cpu、内存、磁盘空间的抽象和转换,呈现出可供分割、组合的一个或多个电脑配置环境。虚拟化资源一般包括计算能力和数据存储
docker基于LXC虚拟容器技术
LXC技术(Linux Container)主要是借助Linux内核中的CGroup功能和namespace来实现的,为软件提供一个独立的操作系统运行环境。
- namespace:是Linux内核用来隔离内核资源的方式,进程只能看到自己namespace范围内的资源
- CGroup (Control Group):是内核提供的一种可以限制、记录、隔离进程组(process group)所使用的物力资源(cpu、memory、i/o等)的机制
cgroup和namespace对比:
namespace是为了隔离进程组之间的资源;
cgroup是为了对一组进程进行统一的资源监控和限制;
Docker原理及简单使用相关推荐
- 一篇不一样的docker原理解析 提高篇
在上一篇 一篇不一样的docker原理解析 - uncle creepy的文章 - 知乎专栏 中,主要讨论了容器和虚拟机的区别,在实现细节上并没有深入,只是点到即止,在这篇提高篇中,将详细讨论容器的实 ...
- 深入了解RabbitMQ工作原理及简单使用
深入了解RabbitMQ工作原理及简单使用 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchange介绍 ...
- 面试官留步!听我跟你侃会儿Docker原理
1 Docker 简介 1.1 Docker 由来 Docker 是基于 Go 语言开发的一个容器引擎,Docker是应用程序与系统之间的隔离层.通常应用程序对安装的系统环境会有各种严格要求,当服务器 ...
- docker原理及基本概念
Docker技术原理介绍 前言 玩docker有阵子,随着使用的频繁,学习的深入,愈发有了不不少的困惑,于是又回过头复习这些理论知识.还是那句话,温故而知新,每一次阅读都会有不一样的收获. 简介 Do ...
- 面试官:说一说 Docker 原理
开发人员开发完一个电商项目,该 Jar 项目包含 Redis.MySQL.ES.Haddop等若干组件.开发人员自测无误后提交给测试进行预生产测试了. 测试:你的这个服务,我在进行单元测试跟数据核对的 ...
- docker原理介绍以及部署使用
docker原理介绍以及部署使用 1. docker简介 2. docker架构概念 3. docker安装部署 3.1 安装环境 3.2 安装步骤 4. docker使用 4.1 镜像管理 4.2 ...
- 深入浅出Docker原理及实战(三)——制作Dockerfile
声明:这是我在大学毕业后进入第一家互联网公司学习的内容 深入浅出Docker原理及实战系列第三篇,我主要分享如何制作一个Dockerfile,以及基本命令格式. Dockerfile简介 Docker ...
- Docker的RUN流程和Docker原理、Docker的常用命令、其他命令
Docker的RUN流程和Docker原理 Run流程 底层原理 Docker是怎么工作的 Docker为什么比VM快 Docker的常用命令 帮助命令 镜像命令 查看镜像 搜索镜像 下载镜像 指定版 ...
- Docker原理(图解+秒懂+史上最全)
文章很长,建议收藏起来,慢慢读! Java 高并发 发烧友社群:疯狂创客圈 奉上以下珍贵的学习资源: 免费赠送 经典图书:<Java高并发核心编程(卷1)> 面试必备 + 大厂必备 +涨薪 ...
最新文章
- python减小内存占用_如何将Python内存占用缩小20倍?
- CStringArray序列化处理
- Eclipse中propedit插件安装(解决property中文问题)
- Netty解决粘包和拆包问题的四种方案
- 高标准,严要求!数据中心发电机组的调试与验收工作
- 微信小程序【腾讯云开发】创建并上线小程序项目(涉及-数据库操作)
- ELK学习9_ELK数据流传输过程_问题总结2
- 12行代码AC_Leecode 495. 提莫攻击——Leecode每日一题系列
- HDU 5037 Frog(2014年北京网络赛 F 贪心)
- Vue组件-Confirm详解
- jqueryForm 异步上传图片文件
- [转]国内Linux操作系统发行商分类溯源
- 灵魂拷问:为什么5G路由器比2.4G路由器快?
- [UE4]委托代理:单播委托,多播委托,动态单播委托,动态多播委托,事件
- java.awt.eventdispatchthread_大神们,小弟来了!解决办法
- 任务二:实现求平方根关键算法(30 分)求 n 以内(不包括 n)同时能被 3 和 7 整除的所有自然数之和的平方根 s,然后将结果s 输出。例如若 n 为 1000 时,则 s=153.909
- RTX3050显卡怎么样 rtx3050显卡什么水平 rtx3050相当于gtx什么显卡
- 【附源码】Python计算机毕业设计社区生鲜电商平台
- 修改windows的主机映射文件(hosts文件)
- linux 查看开放的端口以及开放端口并且永久开放端口的方法