Docker入门之开篇

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 相信很多人和我开始时一样,听过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

1694154720564.png
虽然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基础架构

1694154744451.png

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

1.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客户端调用,也可以被wgetcurl等命令调用。
  • Docker客户端,也叫docker,是大部分用户与Docker交互的主要方式。用户通过客户端将命令发送给守护进程。命令会遵循Docker Engine API。

2.Docker注册中心(Docker registry)

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

3.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搭建和管理企业级网站应用
相关文章
|
5天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
22 2
|
1月前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
83 5
|
1月前
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
7天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
13天前
|
运维 持续交付 虚拟化
docker入门详解!!!
本文介绍了容器技术的发展历程,从物理机到虚拟化再到容器化,重点讲解了Docker的诞生及其优势。Docker通过轻量级的容器技术,实现了资源的高效利用、快速启动、环境一致性、持续交付和部署等优点。文章还详细解析了Docker的架构和工作原理,包括Docker Daemon、REST接口、Docker Client等组件,以及容器与虚拟机的差异。
49 2
|
20天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
30 3
|
25天前
|
Ubuntu Shell 开发者
Docker入门:轻松开始容器化之旅
【10月更文挑战第17天】Docker 是一种开源的应用容器引擎,它让开发者能够“一次构建、到处运行”。Docker 通过容器化技术将应用程序及其依赖打包在一起,从而确保应用在任何环境中都能一致地运行。本文将为新手用户提供一个全面的Docker入门指南,包括基本概念、优势、安装配置以及如何创建和管理容器。
43 2
|
1月前
|
存储 运维 云计算
探索Docker容器化:从入门到实践
在这个快速发展的云计算时代,Docker容器化技术正在改变应用的开发、部署和管理方式。本文旨在为初学者提供一个关于Docker的全面入门指南,并通过实践案例展示Docker在实际开发中的应用。我们将一起了解Docker的核心概念、基本操作、网络和存储,以及如何构建和部署一个简单的Web应用。无论你是开发者还是运维人员,本文都会帮助你快速掌握Docker的核心技能。
|
1月前
|
Kubernetes Cloud Native Docker
云原生入门:Kubernetes和Docker的协同之旅
【10月更文挑战第4天】在这篇文章中,我们将通过一次虚拟的旅行来探索云原生技术的核心——Kubernetes和Docker。就像乘坐一艘由Docker驱动的小船启航,随着波浪(代码示例)起伏,最终抵达由Kubernetes指挥的宏伟舰队。这不仅是一段技术上的旅程,也是理解现代云架构如何支撑数字世界的冒险。让我们扬帆起航,一探究竟!
|
1月前
|
Ubuntu Linux 虚拟化
Docker入门实践(一)
Docker入门实践(一)