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

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的安装以及可能遇到的问题。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
610 2
|
7月前
|
运维 Kubernetes 开发者
解锁现代开发与部署:Docker入门指南
解锁现代开发与部署:Docker入门指南
240 100
|
5月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
8月前
|
NoSQL 安全 Redis
Docker Compose :从入门到企业级部署
Docker Compose 是用于定义和运行多容器应用的工具,支持服务、网络和卷三大核心要素。通过简洁的 YAML 文件,可实现应用的快速部署与管理,适用于开发、测试及生产环境。
632 0
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
382 5
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
Ubuntu 应用服务中间件 nginx
docker入门-快速学会docker
本文介绍了Docker的基本概念,包括镜像、容器、tar文件、Dockerfile和仓库,并通过实际操作演示了如何使用Docker。从拉取Nginx镜像、运行容器、修改容器内容、保存容器为新镜像,到使用Dockerfile构建自定义镜像,最后讲解了如何保存和恢复镜像。文中还推荐了一个在线实践平台Play with Docker,方便读者快速上手Docker。
1075 5
docker入门-快速学会docker
|
12月前
|
Ubuntu Linux Docker
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
Kubernetes Linux Docker
容器化技术Docker入门与实践
容器化技术Docker入门与实践
255 20
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。