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

前言

在Docker出现之前,应用程序的开发、部署和管理通常使用传统的虚拟机物理机手动部署 的方式来处理,后端通常有多个服务(RedisMySQLMQ消息队列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,上面介绍了常用的几个板块,还是非常容易上手学习的。

相关推荐
小小小小宇2 小时前
虚拟列表兼容老DOM操作
前端
悦悦子a啊2 小时前
Python之--基本知识
开发语言·前端·python
Piper蛋窝3 小时前
深入 Go 语言垃圾回收:从原理到内建类型 Slice、Map 的陷阱以及为何需要 strings.Builder
后端·go
安全系统学习3 小时前
系统安全之大模型案例分析
前端·安全·web安全·网络安全·xss
涛哥码咖4 小时前
chrome安装AXURE插件后无效
前端·chrome·axure
OEC小胖胖4 小时前
告别 undefined is not a function:TypeScript 前端开发优势与实践指南
前端·javascript·typescript·web
行云&流水4 小时前
Vue3 Lifecycle Hooks
前端·javascript·vue.js
Sally璐璐4 小时前
零基础学HTML和CSS:网页设计入门
前端·css
cui_hao_nan4 小时前
Docker后端部署
运维·docker·容器
老虎06274 小时前
JavaWeb(苍穹外卖)--学习笔记04(前端:HTML,CSS,JavaScript)
前端·javascript·css·笔记·学习·html