前端需要知道的Docker知识🖥🖥🖥

前言

在Docker出现之前,应用程序的开发、部署和管理通常使用传统的虚拟机 、物理机 或手动部署 的方式来处理,后端通常有多个服务(Redis、MySQL、MQ消息队列、Nginx)需要部署,其中包括软件安装、配置、依赖项管理、环境设置和应用程序代码的部署。这种方式容易出现人为错误,导致服务运行出错,同时也非常耗时。

Docker的出现改变了这些问题,它引入了容器化技术,允许将应用程序及其依赖项封装到一个独立的容器中,提供了环境一致性、便携性、资源隔离和快速部署等优势。

说了这么多,可能还有点模糊,没关系,了解清楚Docker相关概念就清楚了。

基本概念

从三个方面来认识Docker,他们分别是:

  • 镜像 (Image)
  • 容器 (Container)
  • 仓库 (Repository

它们分别是什么,之间又有什么关联呢?

Docker镜像

  • Docker镜像是一个只读的模板,它包含了一个应用程序的所有必要文件和依赖项,包括操作系统、库、代码和配置。
  • 镜像是用于创建容器的基础,是静态的,不会运行,但它可以用于创建一个或多个运行的容器。
  • 镜像通常从Docker镜像仓库中获取(如Docker Hub),或者可以通过Dockerfile定义自定义镜像。

Docker容器:

  • Docker容器是镜像的运行实例,它是一个独立的、可执行的环境,包含了应用程序的运行时进程、文件系统和配置。
  • 容器是镜像的实体化,它可以被创建、启动、停止、删除和暂停。
  • 每个容器都是相互隔离的,它们共享主机操作系统的内核,但有自己的文件系统和进程空间

镜像与容器的关系

  • 容器是在镜像的基础上创建的运行实例。当您使用docker run命令启动容器时,Docker会基于镜像创建一个可运行的容器。
  • 多个容器可以共享相同的镜像。这意味着您可以使用相同的镜像来创建和运行多个相互独立的容器,每个容器都有自己的运行时环境。

Docker仓库

  • Docker仓库是一个用于存储Docker镜像的地方。它可以包括公共仓库私有仓库。
  • Docker Hub是最知名的公共Docker仓库之一,包含了数以千计可用的Docker镜像。
  • Docker仓库可以用于共享、分发和管理Docker镜像。用户可以从仓库中拉取镜像,将自己的镜像推送到仓库中,或在私有仓库中管理自己的镜像。

简单理解就是你可以把它类比为Github就明白了。

Docker基础使用

了解概念之后,我们来实操试下,通过安装Docker来运行一下应用程序。

直接从官网安装一下docker desktop,根据自身系统选择合适版本。

安装完成之后,查看是否安装成功

可以看到一系列的Docker命令,说明已经安装成功了!

来看看界面,images是本地所有的镜像

containers是镜像跑起来的容器

我们可以从Docker Hub中pull镜像下来,如搜索Nginx

点击Run会让你填写一些基础的配置

首先是name,容器名称,不填写的话会给你生成随机的名字

端口,容器内跑的Nginx服务是80端口

Volumes数据卷,需要将宿主机的某个目录挂载到容器中,容器会自动读取这个目录下的文件,同时容器也会将数据保存到这个宿主机目录中。

环境变量,根据不同环境执行不同的配置,比如可以通过Node中的process.env来读取到这个环境变量。

下面是我测试案例的配置:

启动之后是这样的:

丢一个静态页面stu.html到这个目录下试试

可以正常访问效果,说明Docker 容器已经成功跑起来了!

点击这个files可以看到容器文件系统目录,并且同步更新宿主机文件,这边也会自动同步。

当然了,实际上服务器中是没有docker desktop可视化操作,还是需要敲命令来操作docker,就是这里的工具

总结

Docker镜像是静态的、只读的模板,Docker容器是镜像的动态、可执行实例。

镜像用于定义应用程序和其依赖项,而容器用于运行应用程序,并提供隔离和可移植性。容器是镜像的实际运行体,而镜像是容器的构建基础。

我们可以通过docker desktop可视化操作docker,上面介绍了常用的几个板块,还是非常容易上手学习的。

相关推荐
考虑考虑3 小时前
nginx路由重写
运维·后端·自动化运维
曹牧4 小时前
C#:空合并运算符
java·前端·数据库
JaguarJack4 小时前
PHP 紧急修复两项严重 RCE 漏洞,8.2 至 8.5 用户应立即升级
后端·php·服务端
小羊没烦恼!4 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
BingoGo4 小时前
PHP 紧急修复两项严重 RCE 漏洞,8.2 至 8.5 用户应立即升级
后端·php
金銀銅鐵5 小时前
[Java] 展示添加元素时 ArrayList 的内部变化
java·后端·ai编程
斌糖雪梨5 小时前
spring auth 核心流程详解
java·后端·spring
高频因子挖掘机7 小时前
本地已有一年历史数据,第二天更新别只拉“昨天一天”:量化 K 线增量同步实践
后端·github·api
高频因子挖掘机7 小时前
只补缺失日期,不重拉全部历史:增量更新 K 线应该怎么设计?
后端·github·api
智能直播7 小时前
RK3518:1.5G 内存 + 8G 存储,如何跑起硬件编解码、Web、AI 识别、绿幕特效
前端·人工智能·5g