(一)零基础小白都能懂的超全Docker入门教程之开篇

简介: (一)零基础小白都能懂的超全Docker入门教程之开篇

相信很多人和我开始时一样,听过Docker,听过Kubernetes,听过容器也听过集群,貌似很多高大上的技术都耳熟能详,但自己其实却并不了解,甚至不知道他们是什么?能干什么?

最初,我以为Docker以及k8s等技术只能用在大数据以及云等的场景,甚至学习上也需要专门的环境,但是,我发现我错了,而且错的很彻底,不知道你是否也这么认为过,觉得这些技术在平时的开发中根本用不到。如果是这样的,那我现在就告诉你,其实并不是这样的,下面就跟我一起来了解一下Docker吧。

Docker的发展

Docker是由美国旧金山一家名叫“dotCloud”---主要提供基于PaaS的云计算技术服务的公司研发的,Docker是该公司将自己的容器技术进行了简化和标准化之后才得到的名称。

2013年3月,dotCloud公司的创始人之一,Docker之父,28岁的Solomon Hykes正式决定,将Docker项目开源。

之后的Docker,成为了行业里人气最火爆的开源技术,没有之一。更是得到像Google、微软、Amazon这样的巨头的全力支持。

那么Docker和容器技术为什么会这么火爆?说白了,就是因为它“轻”。

Docker是什么

Dockers是有能力打包应用程序及其虚拟容器,可以在任何Linux服务器上运行的依赖性工具,应用程序在任何地方都可以运行,无论是公有云、私有云、单机等这有助于实现灵活性和便携性,。

Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件地速度。

Docker容器 与虚拟机类似,但原理上,容器是将操作系统层虚拟化,虚拟机则是虚拟化硬件,因此容器更具有便携性、高效地利用服务器。 容器更多的用于表示 软件的一个标准化单元。由于容器的标准化,因此它可以无视基础设施(Infrastructure)的差异,部署到任何一个地方。

Docker的优点

  • 标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
  • 节约时间,快速部署和启动,一般是秒级;
  • 方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;
  • 节约成本,docker容器需要的磁盘空间可以减少到MB级;
  • 方便持续集成,通过与代码进行关联使持续集成非常方便;
  • 可以作为集群系统的轻量主机或节点。

Kubernetes

                                     

虽然Docker容器技术被炒得热火朝天,但是其自身也有很多的限制,比如想要将Docker应用于具体的业务实现,容器的编排、管理和调度等都是比较困难的。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理。这时,K8S应运而生。K8S,全称是kubernetes,是基于容器的集群管理平台。

而且,k8s自身有很多优点可以完美的解决硬件对应用的限制。

  • 易部署:K8S部署任何应用都是小菜一碟。只要应用可以打包进容器,K8S就一定能启动它。K8S都可以在任何环境中安全的启动不管什么语言什么框架写的应用,物 理服务器、虚拟机、云环境。
  • 易迁移:Kubernetes 完全兼容各种云服务提供商,可以满足切换供应商的需求,比如从 Google到 AWS。
  • 高效的资源利用:K8S如果发现有节点工作不饱和,便会重新分配 pod,帮助我们节省开销,高效的利用内存、处理器等资源。如果一个节点宕机了,K8S会自动重新创建之前运行在此节点上的 pod,在其他节点上运行。
  • 超强的自动缩放能力:网络、负载均衡、复制等特性,对于 Kubernetes 都是开箱即用的。pod 是无状态运行的,任何时候有 pod 宕了,立马会有其他 pod 接替它的工作,用户完全感觉不到。如果用户量突然暴增,现有的 pod 规模不足了,那么会自动创建出一批新的 pod,以适应当前的需求。反之亦然,当负载降下来的时候,K8S也会自动缩减 pod 的数量。
  • 易操作:只需 写个简单的CI 服务脚本然后运行它,就会使用你的代码创建一个新的 pod,并部署到 Kubernetes 集群里面。应用打包在容器中使其可以安全的运行在任何地方,例如你的 PC、一个云服务器,使得测试极其简单。

Docker基础架构

Docker其实有2个含义:一是指整个Docker项目,一是指Docker引擎。

Docker引擎(Docker Engine)

Docker Engine是一个服务端-客户端结构的应用,主要有这些部分:Docker守护进程、Docker Engine AP、Docker客户端。

  • Docker守护进程(Docker daemons),也叫 dockerd ,是一个持久化的进程,用户管理容器。守护进程会监听Docker Engine API的请求。
  • Docker Engine API是用于与Docker守护进程交互用的的API。它是一个RESTful API,因此它不仅可以被Docker客户端调用,也可以被wget 和 curl等命令调用。
  • Docker客户端,也叫docker,是大部分用户与Docker交互的主要方式。用户通过客户端将命令发送给守护进程。命令会遵循Docker Engine API。

Docker注册中心(Docker registry)

Docker registry是用于存储Docker的镜像。Docker Hub 是一个公共的注册中心,任何人都可以使用,默认配置下,Docker将会在这里寻找镜像。我们在下一节安装Docker时下载软件时会从这里注册账号并拉取(pull)Docker镜像。

另外,用户可以自行构建私有注册中心。

Docker对象

Docker的对象是指Images、Containers、Networks、Volumes、Plugins等等。

  • 容器(Containers)是镜像的可运行的实例。容器可通过API或CLI(命令行)进行操控。
  • 镜像(Images)是一个只读模板,用于指示创建容器。 镜像分层(layers)构建的,而定义这些层次的文件叫Dockerfile。
  • 服务(Services)允许用户跨越不同的Docker守护进程(Docker daemons)的情况下增加容器,并将这些容器分为管理者(managers)和工作者(workers),让他们为swarm共同工作。

除了Docker基础架构之外,还有Docker的扩展架构,其中包括Docker Compose、Swarm Mode等

以及Docker的两种文件格式,Dockerfile和Compose file。Dockerfile定义了单个容器的内容和启动时候的行为。Compose file定义了一个多容器应用。

还有Docker的网络模式及插件等,这些除基础架构之外的东西,本机就暂时不探讨了,一是本来本节就是为了了解Docker,没必要把全部的大而全的东西都完全搞懂,二是,怕给零基础的同学造成压力;三是本人文笔有限,怕你们读的枯燥,哈哈,因此,我宣布本节内容到此结束啦。。。。。。。。下一节,我们来学习Docker Desktop及k8s的安装。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
前端开发 JavaScript Java
Docker 极简入门教程,傻瓜都能看懂!
Docker 极简入门教程,傻瓜都能看懂!
515 0
Docker 极简入门教程,傻瓜都能看懂!
|
Linux Shell 网络安全
docker入门教程(搭建docker看)
Docker 查看系统内核和系统信息 命令:
240 0
docker入门教程(搭建docker看)
|
关系型数据库 MySQL 应用服务中间件
Docker容器数据卷入门教程(超详细)
docker的理念将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器之间可以共享数据,Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为容器的一部分保存下来,那么当容器被删除之后,数据也就没了。为了能够保存数据,在docker容器中使用卷。
500 0
Docker容器数据卷入门教程(超详细)
|
存储 监控 Linux
全面的Docker快速入门教程
全面的Docker快速入门教程
314 0
全面的Docker快速入门教程
|
NoSQL Ubuntu Linux
💖5分钟带你认识Docker核心组件💖Docker系列入门教程
Docker 并不是容器,而只是一个管理容器的引擎,Docker 的底层运行原理:Docker 服务启动→下载镜像→启动该镜像得到一个容器→容器里运行着我们想要的程序。
406 0
💖5分钟带你认识Docker核心组件💖Docker系列入门教程
|
存储 运维 Ubuntu
💖5分钟带你跑一跑Docker💖Docker系列入门教程
 虚拟化(英语:Virtualization)是一种计算机资源管理技术,是将计算机的各种硬件资源,比如服务器、网络、CPU、内存及存储等,予以抽象和转换后呈现出一套新的硬件资源环境,在这一套新的硬件环境下可以安装我们的操作系统,部署我们的应用运行环境等,它打破计算机硬件资源不可切割的障碍,使我们可以比原本的计算机硬件资源结构更好的方式来组合应用这些资源。
338 0
💖5分钟带你跑一跑Docker💖Docker系列入门教程
|
Linux 开发工具 git
Docker 入门教程概念
Docker 入门教程概念
146 0
|
关系型数据库 MySQL Java
💖5分钟带你自定义镜像和安装软件💖Docker系列入门教程
Docker 仓库的概念跟 Git 类似,注册服务器也类似于 GitHub 这样的托管服务。 Dockerfile 用于构建 Docker 镜像,Dockerfile 文件是由一行行命令语句组成,基于这些命令即可以构建一个镜像。
760 0
|
JavaScript 网络协议 Java
Day 21:Docker 入门教程
几个月以前,红帽(Red Hat)宣布了在 Docker 技术上和 dotCloud 建立合作关系。在那时候,我并没有时间去学习关于 Docker 的知识,所以在今天,趁着这个 30 天的挑战,我决定去学习一下 Docker 究竟是怎样的。这篇博文并不是说以后怎么在 OpenShift 上用 Docker 的。请阅读由 Mike McGrath 撰写的 "关于 OpenShift 和 Docker 的技术思考"。也可以看看这个 Stackoverflow 的问题,了解一下 Docker 和 OpenShift 的差别。
164 0
Day 21:Docker 入门教程
|
容器 Docker Ubuntu
【URLOS 应用开发基础课】Docker 官方系统镜像 Alpine 入门教程
Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。本文将为大家详细介绍 Alpine 的安装、配置以及使用的相关内容。
1685 0
下一篇
无影云桌面