前言

1、Docker是什么

Docker本身并不是容器,它是创建容器的工具,它是一个开源的应用容器引擎,使用Go语言开发并遵从Apache2.0协议开源,基于Linux内核的cgroup、namespace、Union FS等技术,对应用进程进行封装隔离,并且独立于宿主机与其他进程,这种运行时封装的状态称之为容器。
Docker 理念是将应用及依赖包打包到一个可移植的容器中,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 发新版Docker引擎上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间相互隔离不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

2、Docker的应用场景

--Web 应用的自动化打包和发布。
    
--自动化测试和持续集成、发布。
    
--在服务型环境中部署和调整数据库或其他的后台应用。
    
--从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

3、Docker的优点

【1】简化程序:
Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。
【2】避免选择恐惧症:
如果你有选择恐惧症,还是资深患者。Docker 帮你 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。 
【3】节省开支:
一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。



Docker的体系结构

Docker使用C/S架构。client向server端发送请求,server端负责构建、运行和分发容器。

client和server可以运行在同一个Host上,client也可以通过socket或RESTful API与远程的server通信。

1、Docker的核心组件

【1】Docker客户端: Client 

常用的Docker客户端是docker命令。通过docker我们可以方便地在Host上构建和运行容器。

docker可以支持很多操作(子命令),仅需一条即可知道:

[root@k8s-master /]# docker

【2】Docker服务器:Docker Danemon 守护进程

Docker 客户端/守护进程,采用客户端/服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
 Docker Danemon是服务器组件,以linux后台服务的方式运行:

Docker Danemon运行在Docker Host上,负责创建、运行、监控容器、构建、存储镜像。

默认配置下,Docker Danemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听,步骤如下:

==============================》允许远程客户端请求配置《==============================

====》编辑配置文件[root@k8s-master /]# vi etc/systemd/system/multi-user.target.wants/docker.service,在环境变量ExecStart后面添加-H tcp://0.0.0.0,允许来自任意IP的客户端连接

====》重启docker daemon:

====》服务器IP为192.168.72.134,客户端在命令行里加上-H参数,即可与远程服务器通信

info子命令用于查看Docker服务器的信息。

================================================================================================
【3】Docker镜像:Image
Docker镜像是Docker容器的基础,类似于虚拟机镜像,可以理解为一个面向Docker引擎的只读模板,包含了文件系统,它的底层采用层叠的只读文件系统。
docker使用联合加载方式,一次把各层文件系统叠加到一起。
镜像是软件生命周期的构建和打包阶段
    
【4】Docker容器:Container
Docker 容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。

Docker容器是从镜像创建的应用运行实例,可以将其启动、开始、停止、删除,而这些容器都是相互隔离的、互不可见。
容器自身是只读的。容器从镜像启动的时候,Docker会在镜像的最上层创建一个可写层,镜像本身将保持不变。

容器时软件启动和运行阶段
    
容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 镜像
容器 对象
镜像

【5】Docker仓库:Registry
类似于代码仓库,用于存储镜像,是Docker集中存放镜像文件的场所。
Docker仓库分类:
公用仓库:官方公用Docker Hub,国内Docker Pool
私有仓库

通过doker的客户端来访问守护进程,通过镜像启动,镜像存于仓库中。当用户创建了自己的镜像之后就可以使用push命令将它上传到指定的公有/私有仓库。

docker pull 命令:从Register下载镜像

docker run命令:先下载镜像(如果本地没有),然后再启动容器。

================================================================================================

2、Docker的安装

至于Docker的安装,不再赘述,可参考CentOS7安装kubernetes和Docker【在线】https://blog.csdn.net/qq_27706119/article/details/88673861

3、小结

Docker本身并不是容器,它是创建容器的工具,它是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

Docker的三大核心:镜像、容器、仓库

通过这三大核心所构建的高效工作流程,毫无疑问,正式Docker从众多虚拟化方案中脱颖而出的重要原因。接下来,在后续内容中,我们将进一步地围绕这三大核心进行学习。

Docker从理论到实践(一)------基础知识必备相关推荐

  1. Linux常用基础知识必备三之常用指令及操作

    Linux常用基础知识必备三之常用指令及操作 1.vi和vim vi如何使用 vi几种模式下的操作指令 命令模式进入编辑模式 命令模式下的快捷键 底行模式(指按了esc键之后输入按键:后出现) 字符串 ...

  2. C语言if条件表达式只能是,小白基础知识必备|| 条件表达式

    原标题:小白基础知识必备|| 条件表达式 if-else 条件表达式 简单来说,条件表达式使我们可以测试变量. 打个比方,我们可以这样说: "假如变量的值等于 7,就执行这样那样的操作.&q ...

  3. 《Python编程:从入门到实践》基础知识总结

    文章目录 字符串 列表 添加和删除元素 组织列表 创建数字列表 使用列表的一部分 元组 字典 遍历字典 嵌套 字典列表 在字典中存储列表 在字典中存储字典 输入与循环 使用标志 函数 传递实参 传递列 ...

  4. 理论题 —— Windows 7基础知识

    运行:slmgr.vbs -dlv 命令可以查询到Windows的激活信息,包括:激活ID.安装ID.激活截止日期等: 运行:slmgr.vbs -dli 命令可以查询到操作系统版本.部分产品密钥.许 ...

  5. 《Python编程:从入门到实践》基础知识部分笔记和作业

    2.3.1 修改字符串大小写 变量名.title()   #单词首字母大写 变量名.upper()   #全部大写 变量名.lower()   #全部小写 2.3.2 在字符串中使用变量(format ...

  6. Python编程:从入门到实践(基础知识)

    第一章 起步 计算机执行源程序的两种方式: 编译:一次性执行源代码,生成目标代码 解释:随时需要执行源代码 源代码:采用某种编程语言编写的计算机程序 目标代码:计算机可执行,101010 编程语言分为 ...

  7. c语言浮点型常量表示平均数_小白基础知识必备|| 整型常量与进制间的转换

    一.C语言关键字 C语言的关键字共有32个,根据关键字的作用,可分为数据类型关键字.控制语句关键字.存储类型关键字和其它关键字四类. 数值类型关键字(12个) void.char.short.int. ...

  8. 初学(一):不积跬步,无以成千里 【基础知识必备】

    2011-04-02 写在前面: 真心的感谢,每一个人,不管你认识或者不认识我. 感谢,在学习的日子里对我不断的提问很有耐心回复的网友们:感谢,我身边的不断鼓励和聆听我的朋友们:感谢,我的爸爸妈妈:感 ...

  9. 中高级测试工程师基础知识必备之selenium篇

    part 1: 引言:自动化永远是避不开的,反正你入职的岗位要不要用自动化,你必须得会一点,加分项.这一块包括,自动化一些理念和自动化的工具使用. 1.selenium中如何判断元素是否存在? 答: ...

  10. 数据结构---基础知识必备

    刘佳瑜*,王越 *, 黄扬* , 张钊* (淮北师范大学计算机科学与技术学院,安徽 淮北) *These authors contributed to the work equllly and sho ...

最新文章

  1. Wireshark抓取RTP包,还原语音
  2. Jenkins 服务重启方法
  3. 转: centos7 安装 juypter notebook 教程
  4. lecture 3 qkine- start with connections
  5. php无法查询mysql字母,php – 无法在Multi MYSQL查询语句中获取结果
  6. .netcore下的微服务、容器、运维、自动化发布
  7. 微型计算机突然断电什么信息全部都是,微型计算机的硬件组成阶段作业(函授2014春).doc...
  8. 特征因子是什么意思_【空间分析】地理探测器应用-分异及因子探测、交互作用探测(共享单车骑行目的地时空特征与影响因素)...
  9. bat执行java程序的脚本解析
  10. 手机游戏开发 - 究竟要做什么、怎么做(中)
  11. laydate 在vue中使用_如何在vue-cli项目里用layer的layData日期组件(代码)
  12. 2022年 javaJDK下载安装步骤及环境变量配置【超详细】
  13. powerDesigner Could not Initialize JavaVM解决
  14. TRNSYS模块中英文对照
  15. 安卓端airplay实现IOS屏幕镜像
  16. [转]经典JavaScript正则表达式
  17. 软件设计师教程(十三)计算机系统知识-软件系统分析与设计
  18. Ubuntu系统下解决中文显示异常问题
  19. rpm包管理器常见用法
  20. 数据结构1800试题(第1章)

热门文章

  1. java并发-独占锁与共享锁
  2. Spring Cloud Alibaba Nacos之服务注册中心
  3. spring boot介绍及使用详解
  4. jQuery - 添加元素
  5. RDS binglog
  6. 未来人在数据分析中的角色转变
  7. hive启动debug问题
  8. 问答网站系统Question2Answer评测
  9. div+css中的为什么要设置浮动属性,浮动完了为什么又要清除浮动
  10. xcode,cocoa开发:如何使用第三方的dylib