百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程文章 > 正文

什么是 Docker?| Docker 让DevOps变得简单

qiyuwang 2025-02-16 22:37 13 浏览 0 评论

长期以来,软件开发一直与软件部署、维护和运营相隔离。

然而,随着 Docker 的出现,开发人员现在可以轻松地了解部署、配置和操作,从而产生了我们今天所知的DevOps—— 业界最受追捧和高薪的角色之一。

Docker 容器还帮助激发了许多现在被视为标准的技术行业趋势,其中一些包括:自动化 CI/CD 管道、微服务、无服务器架构等,仅举几例。

但实际上 Docker 到底是什么!?!

Docker的定义

Docker 是一个平台,它允许我们将应用程序打包成可部署的可执行文件——称为容器,以及所有必要的操作系统库和依赖项。

这基本上意味着我们可以将我们的应用程序与正在使用的底层基础设施/硬件分开 - 实现快速开发、测试和部署。

因为 Docker 容器提供了简单高效的操作系统级虚拟化。

虚拟化是允许我们创建和管理与底层硬件隔离的虚拟资源的技术。它是云计算的动力,并被当今几乎所有的生产系统所使用。

虚拟化的主要好处是:

  1. 更好地利用硬件资源
  2. 应用程序隔离
  3. 改进的可扩展性和可用性
  4. 集中管理和安全

为什么选择 Docker?

(Docker) 容器与虚拟机的主要区别因素是容器仅虚拟化操作系统,而不是像虚拟机那样虚拟化整个物理机。

这意味着容器本身并不包含一个完整的客户操作系统,这使得它们比它的替代品更轻、更快、更便携和更灵活。

Docker 本身提供了管理容器整个生命周期的平台和工具。

Docker的主要好处:

  1. 简单:Docker 通过使用单个包自行管理所有繁重的虚拟化,消除了将软件开发与运营集成的巨大复杂性。
  2. 速度:你可以每次在几秒或几分钟内启动并运行你的应用程序,而不是花费数小时或数天来设置环境,只是为了在不同的机器或环境上重新进行。更快的生命周期意味着你的团队可以更加敏捷。
  3. 可移植性:由于 Docker 镜像(即容器的蓝图)一旦构建就不可更改,你可以将它们部署在任何支持 Docker 的环境中,并且它将完全按照它在本地计算机上的运行方式运行。这意味着,你可以将应用程序无缝部署到云提供商、本地或混合环境。不再有“但它适用于我的机器”的头痛!
    注意:即使镜像是不可变的,你也可以通过提供环境变量或命令参数等运行时配置来更改容器的行为。
  4. 效率:由于容器共享主机操作系统内核的资源,与虚拟机相比,运行多个容器所需的资源要少得多。因此,硬件资源利用效率更高。
  5. 水平可扩展性:使用容器设计系统的主要好处之一是,你的系统组件默认情况下是隔离的。通过在系统组件之间进行隔离/松耦合,你可以独立开发和部署它们。如果某些组件比其他组件负载更密集,只需添加更多机器、运行更多容器并对其进行负载平衡以横向扩展。
    这就是 Google、Netflix、Uber 等巨头实现无限可扩展性的方式!
  6. 技术栈的自由:Docker 与堆栈无关,这意味着它不关心或限制你在容器上使用的语言、库或框架。因此,作为开发人员,你可以使用你选择的工具和框架进行创新。
    这真的为像我们这样的技术爱好者打开了整个世界——如果你喜欢学习新技术并能够在项目中实际使用它们,那么你需要学习 Docker!
  7. 开源和社区支持:开源且易于使用使得 Docker 被广泛采用,带来了协作和社区支持。它的上游存储库以Moby的形式提供。

“Docker 听起来很棒。但有什么问题?”

尽管容器很棒,但它们并不是万能的解决方案。

由于多个容器在同一主机上运行并且不虚拟化硬件,因此与 VM 相比,它们提供了较低级别的隔离。这可能会在某些利基项目中引起安全或合规问题,这可能是一个重要的考虑因素。

Docker架构

要了解 Docker,我们需要了解以下概念:

  • Docker 守护进程:docker 的“大脑”——它是一个服务于 API 请求的进程,并管理 Docker 对象,如镜像、容器和卷等。如果需要,它还可以与其他 Docker 守护进程通信。
  • Docker 客户端:使用 REST API 与 Docker 守护进程通信的(docker)命令行程序。
  • Docker 主机:运行守护进程的(物理或虚拟)机器。
  • 容器:这是启用操作系统级虚拟化的过程 - 通过打包所需的库和依赖项并提供与主机和其他容器的隔离。
  • 镜像:用于创建容器的只读“蓝图”或模板。
  • Registry:镜像的存储或存储库,例如 Docker Hub。

主要的 Docker 工作流程如下:

  • 在你的系统上安装 Docker
  • 获取你需要的 Docker 镜像:从注册表中提取镜像(通过 docker pull)并直接使用它们或在现有镜像之上构建你自己的镜像(即使用 Dockerfile 和 docker build)
  • 使用这些镜像运行容器(通过 docker run / docker-compose / docker swarm 等)

笔记:

  • 你必须登录到 Docker Hub 才能从中提取镜像(通过 docker login)
  • 如果你尝试使用本地不存在的镜像运行容器,则 Docker 守护进程将自动尝试从 Docker Hub 拉取镜像(如果存在)。

快速演示

假设你的系统上安装了 Docker。现在,例如,要运行 Redis 容器,只需打开终端并执行:

docker run redis 

“一条命令就让Redis跑起来了!”

是的,就是这么简单!

“下载档案、提取、构建二进制文件、管理配置和设置权限等怎么样?Docker 是如何实现这一点的?”

当你运行该命令时,Docker 会执行以下步骤:

  • CLI(客户端)将你输入的命令转换为向守护进程发出的 REST 请求
  • 守护进程检查本地是否存在“最新”的 redis镜像
  • 如果没有,守护进程将从 Docker Hub 中提取镜像并将其保存在本地(根据你的互联网速度,下载镜像可能需要几秒钟/分钟)
  • 然后 Daemon 使用 Image 创建一个 Container - 因为 Image 已经包含了这样做所需的所有信息
  • 最后你发现你的机器上面运行了一个 Redis 服务器。

这只是一个例子。你可以类似地运行许多其他经过验证的官方预构建镜像,例如 MySQL、Ubuntu、Nginx、Apache Server 等。仅举几例。

你还可以通过扩展现有镜像来构建自己的镜像;即以你想要的语言、库或框架添加你自己的代码,并根据需要对其进行配置。

结论

通过简化虚拟化,Docker 使容器成为当今现代软件团队的事实标准。它还允许曾经害怕操作的开发人员现在可以管理和自动化它。

毫无疑问,IT 行业的任何人都将从学习 Docker 和容器中受益。

我希望它让你和我一样兴奋!

那么,让我们一起继续了解更多关于 Docker 的知识吧!

在本系列的下一篇文章中,我将详细了解docker image的工作原理、如何正确使用它们以及使用 Dockerfile 构建你自己的自定义镜像。

相关推荐

10款最出色的免费数据库管理工具(免费数据库客户端)

OpenKeyValOpenKeyval是一款免费、开源的键值数据库管理工具,基于Web,并且基于PHP开发,其目标是用最简单的方法来管理Web应用程序数据。用户只需要发送一个POST请求就可以存储...

主流数据库的不同点在哪?MySQL和SQL Server的区别介绍

在本教程中,树懒君介绍了两种最普遍应用的RDBMS—MySQL和MicrosoftSQLServer。通过介绍MySQL和SQLServer的几个关键区别,希望大家能在这两者之间做出最适合自己的...

【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言...

MySQL原理介绍(mysql原理简述)

一、Mysql中有哪几种锁?1)表级锁开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。...

免费的sql工具,SQLynx有哪些优势?

1.免费且功能全面无成本负担:对于个人用户来说,SQLynx个人版完全免费,无需支付任何使用费用或订阅费用,降低了个人开发者的经济成本。...

免费mysql服务器,mySQL云数据库产品优势?

mysql免费服务器,免费mysql服务器。云数据库MySQL(TencentDBforMySQL)是一种稳定可靠、可弹性扩展和便于管理的关系型数据库服务。云数据库MySQL提供备份恢复、监...

结合我们公司的需求,看了ORACLE的收费,决定弃购!

今天向ORACLE的销售人员,确认了他们的报价,每套ORACLE按CPU付费,一个CPU报价约26万,如果你一台服务器有4个CPU,则26*4=104万(一台服务器)。我们有10台服务器,经费不够的情...

一起免费考 MySQL OCP 认证啦(mysql ocp考试大纲)

前言:在1995年,首个MySQL版本发布,为庆祝MySQL诞辰30周年,OracleUniversity在限定期间内推出了多个MySQL的免费培训课程与认证,其中也包括My...

Navicat推出免费数据库管理软件Premium Lite

IT之家6月26日消息,Navicat推出一款免费的数据库管理开发工具——NavicatPremiumLite,针对入门级用户,支持基础的数据库管理和协同合作功能。▲Navicat...

Linux服务器配置DNS解析(linux dns配置服务器)

环境说明CentOS等Linux操作系统基本是一样的...

搭建内网的DNS服务器(搭建内网dns解析服务器)

1.安装dnsmasq#centosyum-yinstalldnsmasq...

# 更换手机热点后secureCRT无法连接centOS7系统

#更换手机热点后secureCRT无法连接centOS7系统##一、问题描述某些情况下,我们可能使用手机共享热点而给电脑联网。本来用一个手机热点共享网络时,SecureCRT可以正常连接到Cent...

VMware与CentOS安装配置指南(vmware workstation安装centos7)

以下是一份详细的VMware虚拟机安装、配置及CentOS系统安装配置的指南,适合新手逐步操作:一、VMware虚拟机安装与配置...

CentOS7安全加固的一份整理规划建议

◆更新系统:及时更新CentOS7操作系统版本和安全补丁,确保系统以最新状态运行。◆关闭不必要的服务:在运行系统时,应关闭不需要的服务和端口,以减少系统暴露的攻击面。◆安装防火墙:使用iptables...

DNS从入门到放弃系列(3)(dns f1)

见字如面,我是小斐,今天文章展开说明bind9中named.conf...

取消回复欢迎 发表评论: