Docker — 从入门到实践

Docker 在前端开发中的应用实例

1、使用 Docker 搭建 WordPress

2、Docker + Nginx 部署 React 应用

3、Docker 部署 node 服务

一、Docker 是什么?

了解 Docker 之前,我们先来了解一下虚拟机(Virtual Machine,简称 VM)。

1、什么是虚拟机?

为什么要用虚拟机?

整合资源是使用虚拟机的首要原因和目的。大多数的操作系统和应用,在安装(部署)时,都只会占用很少的硬件资源。

我们可以将虚拟机视为一种由软件组成的计算机,可以使用它来运行在真实物理计算机上运行的任何软件。通过将一台物理服务器划分为多个虚拟机并共享资源,可以更有效地利用硬件资源,提高资源利用率

与物理机一样,虚拟机拥有自己的操作系统(Windows、Linux 等)、存储、网络、设置和软件等,并且与在该主机上运行的其他虚拟机完全隔离。

虚拟机可以做什么,有什么好处?

  1. 资源利用率最大化:虚拟机允许在一台物理服务器上同时运行多个虚拟机,从而提高服务器资源的利用率。通过共享处理器、内存和存储等资源,可以更有效地利用硬件资源,降低成本。
  2. 灵活性和可扩展性:虚拟机可以根据需要动态分配和调整资源。当应用程序的需求发生变化时,可以根据需要增加或减少虚拟机的数量和资源配额,实现灵活的资源管理和弹性扩展。
  3. 硬件无关性:虚拟机屏蔽了底层物理硬件的差异,使得应用程序可以独立于具体的硬件平台运行。这意味着应用程序可以在不同的操作系统和硬件环境中无缝迁移,提供更好的可移植性和兼容性。
  4. 隔离性和安全性:虚拟机提供了隔离的运行环境,不同的应用程序或服务可以在各自独立的虚拟机中运行,互不干扰。这种隔离性可以有效防止应用程序之间的冲突或故障相互影响,提高系统的稳定性和安全性。
  5. 简化管理和维护:通过虚拟化技术,可以统一管理和监控多个虚拟机,简化系统管理和维护的工作量。可以通过集中管理工具对虚拟机进行统一的配置、备份、恢复和升级,提高管理效率。
  6. 开发和测试环境:虚拟机可以用于创建和管理开发和测试环境,使开发人员可以在独立的虚拟机中进行应用程序的开发、测试和调试。这种隔离的开发和测试环境可以有效地模拟真实生产环境,并提供更好的可控性和可重现性。
2、什么是 Docker?

容器化:容器化是软件开发的一种方法,可以将应用程序和它所依赖的组件、相关的环境变量配置文件等打包成容器,然后在不同的环境中运行。容器技术最流行的实现就是 Docker。Docker 是一种虚拟化容器技术,其设计理念是 “一次构建,到处运行”。

举个例子:这就像码头上的集装箱运载货物一样,把货物(应用程序)打包后放在一个集装箱里,假设这个货物是一箱罐头和食用所需的勺子与叉子(依赖环境),通过货轮,货物可以很方便地从一个码头(假设是 Ubuntu 环境)运送到另一个码头(假设是 Centos环境)。在运输期间,货物不会受到任何的损坏(程序文件没有丢失和损坏),所以在另一个码头卸货后,依然可以很好地食用(正常启动)。

3、Docker VS 虚拟机

与虚拟机相比,Docker 以一种轻量级的方式实现了运行空间的隔离。虚拟机拥有的好处,Docker 也都有。打个比方,如果物理机是一栋写字楼,那么虚拟机就是写字楼当中不同的租赁单位(公司),而 Docker 就是办公室内的隔断或分区

从这个比喻中,可以发现 Docker 和虚拟机之间的一些区别:

  • 资源占用:虚拟机是独立的单位,每个虚拟机都需要分配独立的资源,包括处理器、内存和存储空间等,就像不同单位的行政、IT 支持部门;而容器则是办公室内的隔断或分区,它们共享相同的办公室资源,包括操作系统内核和环境配置等,就像同一单位共享同一个 IT 支持部门。因此,相比于虚拟机,容器的资源占用更少,可以更高效地利用硬件资源。
  • 启动时间和性能:由于每个虚拟机需要启动整个操作系统,所以虚拟机的启动时间相对较长。而容器启动速度快,通常在几秒钟内完成启动,因为它们共享主机操作系统内核,不需要启动整个操作系统。虚拟机在性能方面可能会有一定的开销,而容器的性能开销较小,更接近于直接在主机上运行应用程序。
  • 隔离性:虚拟机提供了较强的隔离性,每个虚拟机都运行在独立的操作系统实例中,相互之间隔离,互不影响。而容器是在操作系统层面进行隔离的,它们共享相同的操作系统内核,但通过容器技术实现了进程级别的隔离,使得容器之间相互独立。虚拟机提供了更强的隔离性,适合于需要更高安全性和完全隔离的场景,而容器提供了较轻量级的隔离性,适合于快速启动和高密度部署的场景。
  • 管理和部署:虚拟机的管理和部署相对复杂,需要涉及虚拟机的配置、网络设置等。而容器具有更简化的部署和管理方式,通过使用容器镜像和容器编排工具,可以快速构建、部署和管理容器化应用。
  • 操作系统支持:容器作为一种隔断,不能基于一种内核(Linux)提供另一种内核(Windows)的虚拟化运行环境,所以,基于 Linux 的 Docker 是不支持运行 Windows 应用的(Docker 可以在 Windows 运行,Docker 利用了 Windows 操作系统中的 Hyper-V 虚拟化技术来创建一个轻量级的 Linux 虚拟机,Docker 容器在这个 Linux 虚拟机中运行)。

二、Docker 介绍

1、基本概念

1.1、镜像

Docker 会把应用程序及依赖打包进镜像(Images)里,提供了容器运行时所需的程序、库、配置文件等,同时还包含了一些为容器运行时准备的一些配置参数(如 volume 卷)。

2.1、容器

容器(Container)是镜像的可运行实例。一个 Docker 镜像可以创建多个容器,镜像和容器的关系,就像是 JavaScript 中的类和实例的关系一样

我们可以使用 Docker 提供的 API 创建、启动、停止、删除容器。在默认情况下,容器与容器、容器与主机在默认情况下是隔离的,拥有自己的独立进程空间、网络配置等。

容器由其镜像以及在创建或者启动容器时提供的配置选项来定义,当容器被删除时,未对容器状态做持久化存储的更改都会消失。

3.1、仓库

镜像构建完成后,可以很容易地在当前宿主机上运行。但是,如果需要在其它服务器上使用这个镜像,就需要一个集中的存储、分发镜像的服务,Docker Hub 就是这样的服务,叫作仓库( Docker Registry )。仓库的概念与 Git 类似,可以理解为 GitHub 这样的托管服务。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值