docker基本概念

docker概念

    • 一、什么是docker?
    • 二、docker组件:
    • 三、我们能用docker做什么
    • 四、Docker与配置管理:
    • 五、Docker的技术组件
    • 六、Docker资源

引用《第一本docker书》内容,以下均为读书笔记

一、什么是docker?

Docker是一个能把开发的应用程序自动部署到容器的开源引擎。由docker公司团队编写,基于Apache2.0开源授权协议发行。
docker职责的逻辑分离,使用docker,开发人员只需要关心容器中运行的应用程序,运维人员只需要关心如何管理容器。docker设计目的之一就是加强开发人员写代码的开发环境和应用程序要部署的生成环境的一致性,从而降低”开发时以切正常,肯定是运维的问题“的风险。
docker具有快速、高效的开发生命周期,它能缩短代码从开发、测试到部署、上线运行的周期,让应用程序具备可移植性,易于构建,并易于协作。
docker鼓励面向服务的架构,docker推荐单个容器只运行一个应用程序,这样可形成分布式的应用程序模型。在这种模型下,应用程序或服务可表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序变得非常简单,同时提高了程序的内省性。(当然也可一个容器运行多个进程的应用程序)

二、docker组件:

docker客户端和服务器;
docker镜像;
Registry;
docker容器。

dokcer客户端和服务器:
docker是采用(C/S)架构程序,客户端只需要向docker服务器或守护进程发出请求,服务器和守护进程将完成所有工作并返回结果。
docker镜像:
镜像是docker世界的基石,用户基于镜像来运行自己的容器,镜像也是dokcer生命周期中的构建部分,镜像是基于联合文件系统的一种层式的结构,有一系列指令一步一步构建出来。例如:
添加一个文件
执行一个命令
打开一个端口
也可以把镜像当作容器的"源代码",镜像体积很小,易于分享、存储和更新。

Rigistry:
docker用Rigistry来保存用户构建的镜像,Registry分公共和私有两种,docker公司运营的公共Registry叫Docker Hub,用户也可以在docker Hub注册账号,分享并保存自己的镜像。有些私有镜像包含有源代码或专利信息等,或者只在组织、团队内部可见的镜像。也可以架设自己的私有Rigistry,私有Rigistry可受到防火墙的保护,满足一些组织的特殊需求。

容器:
容器是基于镜像启动起来的,容器中可以运行一个或多个进程。docker可以帮助你构建和部署容器,只需要把应用程序或服务打包放进容器即可。我们可以认为,镜像是docker生命周期中构建或打包阶段,而容器则是启动或执行阶段。总结起来,docker容器就是:
一个镜像格式;
一系列标准的操作;
一个执行环境
docker借鉴了标准集装箱的概念,标准集装箱将货物运往世界各地,docker将这个模型运用到自己的设计哲学中,唯一不同是,集装箱运输货物,而docker运输软件。
每个容器都包含一个软件镜像,也就是容器的"货物",与真正 的货物一样,容器里的软件镜像可以进行一些操作,例如:镜像可以被创建、启动、关闭、重启以及销毁。docker执行上述操作时,不关心里面有什么,不管是web服务器,还是数据库,或者应用服务器,所有容器都按照相同的方式将内容"装载"进去。
docker不关心你要把容器运到何方,可以在笔记本构建容器,上传到Rigistry,然后找个物理或虚拟服务器测试,再把容器部署到主机集群中去。像标准集装箱一样,dokcer容器易于替换,可以叠加,易于分发,并且尽量通用。
使用docker,可以快速构建一个应用程序服务器、一个消息总线、一套实用工具、一个持续集成(CI)测试环境或者任意一种应用程序、服务或工具。

三、我们能用docker做什么

docker容器可以为各种测试环境提供很好的沙盒环境,并且,容器具有"标准性"的特征,非常适合为服务创建构建块。docker应用场景如下:
加速本地开发和构建流程,使其更加高效、更加轻量化,本地开发人员可以构建、运行并分享容器,容器可以在开发环境中构建,然后轻松提交到测试环境中,并最终进入生产环境。
能够让独立服务或应用程序在不同的环境中,得到相同的运行结果。这点在面向服务的架构和重度依赖微型服务的部署中尤其实用。
用docker创建隔离的环境来进行测试。例如,用Jenkins CI这样的持续集成工具启动一个用于测试的容器。
docker可以让开发者在本机构建一个复杂的程序或架构来进行测试,而不是一开始就在生产环境部署、测试。
构建一个多用户的平台即服务(PaaS)基础设施。
为开发、测试提供一个轻量级的独立沙盒环境,或者将独立的沙盒环境用户技术教学,如shell、编程教学。
提供软件即服务(SaaS)应用程序,如Memcached即服务。
高性能、超大规模的宿主机部署。

四、Docker与配置管理:

自动化运维工具:Ansible、Puppet、chef。docker包含一套镜像构建和镜像管理的解决方案,现代配置管理工具的原动力之一就是"黄金镜像"模型。 然而,使用黄金镜像的结果就是充斥了大量、无管理状态的镜像,镜像数量庞大、版本混乱不堪。随着镜像使用,不确定性、环境混乱加剧,镜像本身也越笨重,最终不得不手动修正镜像不合符设计和难以管理的配置层,因为底层的镜像缺乏适当的灵活性。
与传统镜像相比,docker显得轻松,镜像是分层的,可以对其进行迅速迭代,数据表明,docker的特性确实可以减轻许多传统镜像管理的麻烦,docker现在还难以完全取代配置管理工具,但是从幂等性和内省性来看。取得了非常好的效果。
docker本身需要在主机上安装、管理和部署,主机也需要被管理起来,这样,docker容器需要编配、管理和部署,也经常需要与外部服务和工具通信,而这些恰恰是配置管理工具所擅长。
docker显著的特点:对不同宿主机、应用程序和服务,会表现出不同的特性与架构,docker可以是短生命周期的,也可以用于恒定的环境。可以用一次即销毁,也可以提供持久的服务。这些行为不会增加docker的复杂性,也不会和配置管理工具产生重合。基于这些行为,基本不需要担心管理状态的持久性,也不必担心状态的复杂性,因为容器的生命周期往往比较短,而重建容器的代价通常也比传统的状态修复要低。
当然,并非所有的基础设施都具备这样的"特性",在未来一段时间,docker这种与理想化的工作负载可能会与传统的基础设备部署共存一段时间。长期运行的设备主机仍是很多组织中具有不可替代的地位,由于多样化的管理需求,以及管理docker的需求,在绝大多数组织中,docker和配置管理工具可能都需要部署。

五、Docker的技术组件

docker可以运行于任何现代linux内核的x64主机,推荐内核时3.8及以上,docker开销低,可以用于台式机、笔记本。
一个原生的linux容器格式,docker称为libcontainer,libcontainer也是现在dokcer容器的默认格式。
linux内核命名空间(namespace),用于隔离文件系统、进行和网络。
文件隔离系统:每个容器都有自己的root文件系统。
进程隔离:每个容器都运行在自己的进程环境中
网络隔离:容器间的虚拟网络接口和IP地址都是分开的。
资源隔离和分组:使用cgroups(即control group,linux内核特性之一)将cpu和内存之类的资源独立分配给每个docker容器。
写时复制:文件系统都是通过写时复制创建的,这就意味着文件系统时分层的、快速的、而且占用的磁盘空间更小。
日志:容器产生的STDOUT、STDERR和STDIN这些IO流会被收集并记入日志,用来进行日志分析和故障排错。
交互式SHELL:用户可以创建一个伪tty终端,将其连接到STDIN,为容器提供一个交互式的shell

六、Docker资源

Docker官方主页
Docker Hub
Docker官方文档
Docker官方博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/113803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中文编程开发语言工具应用案例:ps5体验馆计时收费管理系统软件

中文编程开发语言工具应用案例:ps5体验馆计时收费管理系统软件 软件部分功能: 1、计时计费功能:只需点开始计时即可,时间直观显示 2、商品管理功能:可以管理饮料等商品 3、会员管理功能:支持只用手机号作…

Arcgis 数据操作

在进行数据操作的时候,需要注意坐标系要一致,这是前提。 数据类型 文件地理数据库:gbd 个人地理数据库:mdb (Mircosoft Access) 矢量数据:shp 推荐使用gbd数据,效率会更高。 采…

【912.排序数组】

目录 一、题目描述二、算法原理2.1快速排序2.2归并排序 三、代码实现3.1快排代码实现3.2归并代码实现 一、题目描述 二、算法原理 2.1快速排序 2.2归并排序 三、代码实现 3.1快排代码实现 class Solution { public:int getRandom(int left,int right,vector<int>&…

[翻译]理解Postgres的IOPS:为什么数据即使都在内存,IOPS也非常重要

理解Postgres的IOPS&#xff1a;为什么数据即使都在内存&#xff0c;IOPS也非常重要 磁盘IOPS&#xff08;每秒输入/输出操作数&#xff09;是衡量磁盘系统性能的关键指标。代表每秒可以执行的读写操作数量。对于严重依赖于磁盘访问的PG来说&#xff0c;了解和优化磁盘IOPS对实…

es : java 查询

1. POM 配置 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.6.2</version></dependency> 2. 建立ES集群连接 RestHighLevelClient cli…

Ubuntu系统下使用docker容器配置nginx并部署前端项目

1.下载 Nginx 镜像 命令 描述 docker pull nginx 下载最新版 Nginx 镜像 :2. 创建要挂载的宿主机目录 启动前需要先创建 Nginx 外部挂载的配置文件&#xff08; /home/nginx/conf/nginx.conf&#xff09; 之所以要先创建 , 是因为 Nginx 本身容器只存在 / etc/nginx 目录 ,…

Hive知识梳理(好文)

Hive是建立在 Hadoop 上的数据仓库基础构架。可以将SQL查询转换为MapReduce的job在Hadoop集群上执行。 元数据 Hive元数据信息存储在Hive MetaStore中&#xff0c;或者mysql中。 分隔符 Hive默认的分格符有三种&#xff0c;分别是&#xff08;Ctrl/A&#xff09;、&#xff0…

Spring 域对象共享数据

1、使用ServletAPI向request域对象共享数据 首页 <a th:href"{/testServletAPI}">测testServletAPI</a><br>success.html <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"> <head>&…

iOS 13以下系统,使用iOS QQ 登录 SDK 崩溃问题

最近用iPhone 6p 系统&#xff1a;12.5.4 调用QQ三方登录&#xff0c;出现崩溃到初始化QQ SDK的位置 在询问了QQ官方客服后&#xff0c;得到了答复&#xff0c;可以放弃治疗了

2.IDEA的安装使用指南

学习Java的第二步应该是从IDEA下手&#xff0c;这篇博文介绍了它的安装及使用&#xff0c;希望大家看完后可以独立安装 ~ 文章目录 一、下载安装包二、安装 IDEA三、IDEA 初步上手 一、下载安装包 安装包可以从官网下载&#xff0c;也可以直接私信我拿取。这里主要介绍如何在官…

Swingbench 压力测试(超详细)

目录 前提需要有配置好的oracle哦 1、环境准备 2、安装Swingbench 3、造数据 4、压测 前提需要有配置好的oracle哦 1、环境准备 启动监听 lsnrctl start 启动数据库 sqlplus / as sysdba startup 创建表 CREATE TABLESPACE soe DATAFILE /u01/app/oracle/oradata/or…

2.卷积神经网络(CNN)

一句话引入&#xff1a; 如果我们要做图像识别&#xff0c;用的是一个200x200的图片&#xff0c;那么BP神经网络的输入层就需要40000个神经元&#xff0c;因为是全连接&#xff0c;所以整个BP神经网络的参数量就是160亿个&#xff0c;显然不能这样来训练网络&#xff0c;所以我…

【vue3】keep-alive缓存组件

include定义要缓存的组件名。注意&#xff0c;不是引入的别称&#xff0c;就是组件的文件名exclude定义不缓存的组件名。一样的&#xff0c;这里是组件的文件名max最多缓存多少个组件。如果组件个数大于max&#xff0c;会自动剔除掉不常用的使用keep-alive后会增加两个生命周期…

【java】【重构一】分模块开发设计实战

目录 一、创建项目 1、先创建一个空项目 2、设置项目SDK等 二、创建父模块 选择springboot 1、创建父模块parent 2、删除多余文件&#xff0c;只保留pom.xml 3、修改pom.xml 4、将部分公共依赖加入到pom 三、创建实体类子模块entity 1、创建实体类子模块entity 2、…

Jprofiler V14中文使用文档

JProfiler介绍 什么是JProfiler? JProfiler是一个用于分析运行JVM内部情况的专业工具。 在开发中你可以使用它,用于质量保证,也可以解决你的生产系统遇到的问题。 JProfiler处理四个主要问题: 方法调用 这通常被称为"CPU分析"。方法调用可以通过不同的方式进行测…

C++中的继承(超详细)

C中的继承 1.继承的概念及定义1.1继承的概念1.2 继承定义1.2.1 定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化 2.基类和派生类对象赋值转换3.继承中的作用域4.派生类的默认成员函数5.继承与友元6.继承与静态成员7.继承的总结和反思 1.继承的概念及定义 1…

算法通关村第十关青铜挑战——什么是快速排序

大家好&#xff0c;我是怒码少年小码。 快速排序 选取pivot中心轴将大于pivot中心轴的元素放在中心轴的右边将小于pivot中心轴的元素放在中心轴的左边重复上述过程 实现方式一&#xff1a; void quickSort(int arr[], int left, int right) {if (left < right) {int pi…

新兴网络安全威胁:数字防御新格局

根据Check Point Research (CPR)的数据&#xff0c;今年上半年犯罪活动大幅增加&#xff0c;第二季度全球每周网络攻击激增 8%&#xff0c;这创下了两年来的最高成交量。 勒索软件和黑客行为等传统威胁已经演变&#xff0c;犯罪团伙不断调整其方法和工具来渗透和影响世界各地的…

c语言练习93:环形链表的约瑟夫问题

环形链表的约瑟夫问题 环形链表的约瑟夫问题_牛客题霸_牛客网 描述 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数&#xff0c;报到 m 的人离开。 下一个人继续从 1 开始报数。 n-1 轮结束以后&#xff0c;只剩下一个人&#xff0c;问最后留下的这个人编号是…

粘包和半包问题及解决办法

粘包问题是指数据在传输时&#xff0c;在一条消息中读取到了另一条消息的部分数据&#xff0c;这种现象就叫做粘包。 半包问题是指数据在传输时&#xff0c;接收端只收到了部分数据&#xff0c;而非完整的数据&#xff0c;就叫做半包。 产生粘包和半包问题原因&#xff1a; …