Docker学习一篇就够了

2023-05-16

Docker简介

     Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
DockerClient客户端
Docker Daemon守护进程
Docker Image镜像
DockerContainer容器

Docker特性


     在docker的网站上提到了docker的典型场景:
Automating the packaging and deployment of applications(使应用的打包与部署自动化)
Creation of lightweight, private PAAS environments(创建轻量、私密的PAAS环境)
Automated testing and continuous integration/deployment(实现自动化测试和持续的集成/部署)
Deploying and scaling web apps, databases and backend services(部署与扩展webapp、数据库和后台服务)
由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。
构建标准化的运行环境,现有的方案大多是在一个baseOS上运行一套puppet/chef,或者一个image文件,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的文件格式在运行时rootfs是read only的)。并且后者文件体积大,环境管理和版本控制本身也是一个问题。
PaaS环境是不言而喻的,其设计之初和dotcloud的案例都是将其作为PaaS产品的环境基础
因为其标准化构建方法(buildfile)和良好的REST API,自动化测试和持续集成/部署能够很好的集成进来
因为LXC轻量级的特点,其启动快,而且docker能够只加载每个container变化的部分,这样资源占用小,能够在单机环境下与KVM之类的虚拟化方案相比能够更加快速和占用更少资源
局限
Docker并不是全能的,设计之初也不是KVM之类虚拟化手段的替代品,简单总结几点:
Docker是基于Linux 64bit的,无法在32bit的linux/Windows/unix环境下使用
LXC是基于cgroup等linux kernel功能的,因此container的guest系统只能是linux base的
隔离性相比KVM之类的虚拟化方案还是有些欠缺,所有container公用一部分的运行库
网络管理相对简单,主要是基于namespace隔离
cgroup的cpu和cpuset提供的cpu功能相比KVM的等虚拟化方案相比难以度量(所以dotcloud主要是按内存收费)
Docker对disk的管理比较有限
container随着用户进程的停止而销毁,container中的log等用户数据不便收集
针对1-2,有windows base应用的需求的基本可以pass了; 3-5主要是看用户的需求,到底是需要一个container还是一个VM, 同时也决定了docker作为 IaaS 不太可行。
针对6,7虽然是docker本身不支持的功能,但是可以通过其他手段解决(disk quota, mount --bind)。总之,选用container还是vm, 就是在隔离性和资源复用性上做权衡。
另外即便docker 0.7能够支持非AUFS的文件系统,但是由于其功能还不稳定,商业应用或许会存在问题,而AUFS的稳定版需要kernel 3.8, 所以如果想复制dotcloud的成功案例,可能需要考虑升级kernel或者换用ubuntu的server版本(后者提供deb更新)。这也是为什么开源界更倾向于支持ubuntu的原因(kernel版本)

Docker并非适合所有应用场景,Docker只能虚拟基于Linux的服务。Windows Azure 服务能够运行Docker实例,但到目前为止Windows服务还不能被虚拟化。
可能最大的障碍在于管理实例之间的交互。由于所有应用组件被拆分到不同的容器中,所有的服务器需要以一致的方式彼此通信。这意味着任何人如果选择复杂的基础设施,那么必须掌握应用编程接口管理以及集群工具,比如Swarm、Mesos或者Kubernets以确保机器按照预期运转并支持故障切换。
Docker在本质上是一个附加系统。使用文件系统的不同层构建一个应用是有可能的。每个组件被添加到之前已经创建的组件之上,可以比作为一个文件系统更明智。分层架构带来另一方面的效率提升,当你重建存在变化的Docker镜像时,不需要重建整个Docker镜像,只需要重建变化的部分。
可能更为重要的是,Docker旨在用于弹性计算。每个Docker实例的运营生命周期有限,实例数量根据需求增减。在一个管理适度的系统中,这些实例生而平等,不再需要时便各自消亡了。
针对Docker环境存在的不足,意味着在开始部署Docker前需要考虑如下几个问题。首先,Docker实例是无状态的。这意味着它们不应该承载任何交易数据,所有数据应该保存在数据库服务器中。
其次,开发Docker实例并不像创建一台虚拟机、添加应用然后克隆那样简单。为成功创建并使用Docker基础设施,管理员需要对系统管理的各个方面有一个全面的理解,包括Linux管理、编排及配置工具比如Puppet、Chef以及Salt。这些工具生来就基于命令行以及脚本。

Docker学习--一篇就够了

 Docker专题栏目

docker学习专题

 


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker学习一篇就够了 的相关文章

  • list清空

    list clear 其它引用该list的值也会被清空list 61 null 我是在for里用的 xff0c 第二次循环时 xff0c 会引起空指针异常 xff0c 具体原因不清楚每次重新 new ArrayList 来清空
  • easyui sidemenu侧边栏点击事件

    lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt title gt My Layout lt tit
  • VR发展前景展望

    VR发展前景展望 引子 随着计算机技术的飞速发展 xff0c 虚拟现实也在短时间内经历了萌芽探索到飞速发展完善的转变 由于其独特的沉浸式体验 xff0c VR的前景被大多数人看好 xff0c 更多的VR相关技术也在为让人能更完美的融合到这个
  • map与jsonObject

    想要的数据格式为 xff1a 34 第一章 34 34 1 第一节 34 34 sectionId 34 1 34 1 第二节 34 sectionId 34 2 34 第二章 34 34 2 第一节 34 34 sectionId 34
  • net.sf.json.JSONException: Object is null

    出现这个错误的原因是net sf json JSONArray或JSONObject转换时 xff0c 对象内包含另一个对象 xff0c 而该被包含的对象为NULL xff0c 所以抛出异常 一种解决办法是将json字符串里的null去掉
  • fastjson根据key去除某一项元素

    数据如下所示 xff1a 34 chapterId 34 1 34 sectionsName 34 34 数据结构简介 34 34 id 34 1 34 contents 34 34 ssssss 34 这里为一个sections对象 34
  • HTML引用外部json文件

    我是在hubuilder里试的 xff0c 先是新建data json文件 里面写上内容 其中var dataFromJSON是为了方便引用 var dataFromJSON 61 34 text 34 34 外部json 34 34 ic
  • idea使用json数据格式化

    Reformat Code 可以将json数据格式化 xff0c 看起来更整洁 xff0c 快捷键是CTRL 43 ALT 43 L但是用起来没反应 xff0c 应该是快捷键冲突 xff0c 然后修改快捷键 关于修改快捷键教程网上有很多
  • easyui layout布局内容显示不全

    设置fit属性为false即可
  • 使用ObjectMapper将map写出到json文件

    64 Test public void ttt String filePath 61 34 src main webapp courseData factorNameAndId json 34 Map lt String Object gt
  • 两次点击会出现undefine

    原因是将拿到的html元素直接插入到了一个新地方 xff0c 导致原有的元素消失 xff0c 所以第二次时获取不到 可以用这种方法 xff0c 获得复制的节点 var clonedNode 61 sourceNode cloneNode t
  • layui里 同级兄弟layer里的iframe方法调用

    比如我们有一个页面A xff0c 然后页面B和C是其子页面 xff0c 在页面A中打开B页面 xff0c 然后咋B中用parent layer open xff0c 打开C页面 xff0c 这样B和C就是A页面下的同级 xff08 兄弟 x
  • xshell远程连接虚拟机缓慢最后失败,(ssh,回环适配)

    https www cnblogs com areyouready p 10134771 html
  • 手机启动镜像boot.img的解包(压)(用split_bootimg.pl)和问题gzip: boot.img-ramdisk.gz: not in gzip format解决

    下载工具split bootimg pl 此脚本在github很多 如gist github com amartinz 84c7ebc64f126bd6b3a8 用split bootimg pl解包boot img 命令 xff1a sp
  • pandas使用json.loads()将列的值转为字典时遇到的问题(lambda)

    会报错 xff1a AttributeError 39 list 39 object has no attribute 39 values 39 formatter 61 lambda x list json loads x values
  • 分布式 ID生成方案

    https www cnblogs com haoxinyue p 5208136 html
  • 过拟合概念

    Interpretation You can see the cost decreasing It shows that the parameters are being learned However you see that you c
  • 【整理】离散数学在计算机学科中的应用

    离散数学在计算机学科中的应用 离散数学是计算机学科中许多专业课程的先行课程 xff0c 离散数学和后续课程的关系密切 xff0c 它是计算机科学与技术应用与研究的有力工具 xff0c 在计算机科学中应用非常广泛 离散数学是计算机科学与技术专
  • 嵌入式Linux开发板移植SSH

    SSH服务可以很方便的通过网络登录到Linux开发板 xff0c 同时支持SFTP协议向开发板传输文件 下面简单讲下移植过程 开发板环境 xff1a 名称 xff1a imx283内核 xff1a Linux2 6 35 3 1 下载源码
  • ue4_AI_BT

    Rotate to face BB entry 大家在编写行为树的时候 xff0c 经常会遇到需求就是要把操作目标转向某人 xff0c 面对某人 xff0c UE4的行为树中 xff0c 为我们提供了节点Rotate to face BB

随机推荐

  • 阿里云 RHSA 漏洞提醒修复方法教程详解

    第一类 xff1a 一 收到阿里云RHSA漏洞提醒通知 二 点击进入查看漏洞明细 三 查看某一项详情 xff0c 注意标红线的地方 xff0c 就是需要更新的包名 四 组织修复命令 xff0c 使用yum upgrade 命令 yum up
  • 搭建一个简单的cms前端框架

    明确一点 xff0c 我们的公司的项目是要求前后端分离 当然首选是node这块 xff0c 警告node很多强大的功能 xff0c 自己了解的不深 xff0c 不过慢慢学习中 好了 xff0c 接下来讲一下我的后端项目的前端部分的搭建过程
  • opencv学习笔记六十六:FisherFace人脸识别算法

    简要 FisherFace是基于LDA降维的人脸识别算法 由Ronald Fisher最早提出 故以此为名 它和PCA类似 都是将原始数据映射到低维空间 但和PCA最大的区别就是它考虑了降维后数据的类间方差和类内方差 使得降维后的数据类间方
  • Docker 安装 Redis 容器 (完整版)

    Docker如果想安装软件 必须先到 Docker 镜像仓库下载镜像 Docker 镜像仓库 Docker 安装Redis 1 寻找Redis镜像 在Docker镜像仓库寻找Redis镜像 Docker 下载Redis镜像的命令 2 下载R
  • 阿里巴巴校招笔试题型攻略

    题型分布 阿里巴巴应届生校园招聘线上测评包括三部分通用能力测试 xff1a 言语理解 资料分析 图形推理 xff1b 每道题单独限时 xff0c 建议多刷真题 xff0c 提高正确率 amp 效率 xff0c 尤其资料分析 xff0c 难度
  • Java中如何判断文件或文件夹是否存在(File.exists)呢?

    下文笔者讲述检测文件或文件夹是否存在的方法分享 xff0c 如下所示 实现思路 xff1a 使用file exists 方法即可检测file对象是否为一个有效的路径或文件夹 exists语法 public boolean exists 返回
  • java如何实现base64和图片互相转换呢?

    下文笔者讲述base64和图片互相转换的方法分享 xff0c 如下所示 实现思路 笔者通过一个utils类实现base64和图片两者的互相转换 例 import java io FileInputStream import java io
  • Java删除字符串中指定字符的方法分享

    转自 xff1a Java如何删除字符串中指定字符呢 xff1f 字符串 字符串主要用于编程 xff0c 概念说明 函数解释 用法详述见正文 xff0c 这里补充一点 xff1a 字符串在存储上类似字符数组 xff0c 所以它每一位的单个元
  • Java中Collections.singleton方法起什么作用呢?

    转自 Java中Collections singleton方法起什么作用呢 xff1f 下文笔者讲述Collections singleton方法的功能简介说明 xff0c 如下所示 Collections singleton方法功能 返回
  • Java如何借助Stream流进行求和呢?

    转自 Java如何借助Stream流进行求和呢 xff1f list简介 集合就是把具有相同属性的东西放在一起 xff0c 也可以是容器 xff0c 把有关的东西都放进去 List是位于java util下的一个接口 xff0c 有序集合
  • Java JSON格式简介说明

    转自 Java JSON格式简介说明 下文笔者讲述java中JSON格式的相关简介说明 xff0c 如下所示 JSON简介说明 JSON JavaScript Object Notation 是一种轻量级的基于文本的数据交换格式 它采用完全
  • Java 如何使用Matcher.matches()匹配整个字符串呢?

    转自 Java 如何使用Matcher matches 匹配整个字符串呢 xff1f 下文讲述使用Matcher matches 匹配整个字符串的方法分享 xff0c 如下所示 Matcher matches 对整个字符串进行匹配 当整个字
  • Java中如何删除文件呢?

    转自 xff1a Java中如何删除文件呢 下文笔者讲述java中删除文件的方法分享 xff0c 如下所示 实现思路 借助File delete 方法即可实现文件删除操作 File delete语法 public boolean delet
  • Java中Random.nextInt()方法功能简介说明

    转自 Java中Random nextInt 方法功能简介说明 下文笔者将讲述Random nextInt 方法的功能简介说明 xff0c 如下所示 Random nextInt 方法功能 用于随机产生某个范围区间的整数 注意事项 Rand
  • Java中ArrayList之clone()方法的功能说明

    转自 Java中ArrayList之clone 方法的功能说明 下文讲述ArrayList中clone 方法的功能简介说明 xff0c 如下所示 ArrayList Clone 方法的功能简介 clone 方法的功能 用于复制一份Array
  • (附源码)计算机毕业设计SSM智慧小区团购系统

    项目运行 环境配置 xff1a Jdk1 8 43 Tomcat7 0 43 Mysql 43 HBuilderX xff08 Webstorm也行 xff09 43 Eclispe xff08 IntelliJ IDEA Eclispe
  • springboot如何使用soap协议的方式访问webService接口呢?

    转自 springboot如何使用soap协议的方式访问webService接口呢 xff1f 下文笔者讲述springboot采用soap协议的方式访问webService接口的方法分享 xff0c 如下所示 1 引入相应的jar包 lt
  • springboot-starter如何整合阿里云datahub呢?

    转自 springboot starter如何整合阿里云datahub呢 xff1f 下文笔者讲述springboot整合datahub的方法分享 如下所示 Datahub简介说明 DataHub的功能 xff1a 1 与大数据解决方案中K
  • Spring之@Qualifier注解简介及示例

    转自 Spring之 64 Qualifier注解简介及示例 下文笔者讲述 64 Qualifier注解功能简介及示例分享 64 Qualifier注解功能简介 功能1 使用bean名称注入DI属性 功能2 设置bean的名称 64 Qua
  • Docker学习一篇就够了

    Docker简介 Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中 然后发布到任何流行的Linux或Windows操作系统的机器上 也可以实现虚拟化 容器是完全使用沙箱机制 相互之