前端需要知道的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,上面介绍了常用的几个板块,还是非常容易上手学习的。

相关推荐
唐诗4 分钟前
这位同学说一说 vue3 的 Provide、Inject
前端·github
m0_7482487711 分钟前
Spring Boot 集成MyBatis-Plus
spring boot·后端·mybatis
zoomdong13 分钟前
10x 提升!TypeScript 宣布使用 Go 重写
前端·typescript
东风西巷14 分钟前
Rubick:基于Electron的开源插件化桌面工具箱
前端·javascript·electron·软件需求
a_j5820 分钟前
k8s面试题总结(十四)
docker·容器·kubernetes
思考的Joey30 分钟前
Docker入门:手把手教你前端容器化部署全流程
前端·docker·devops
Aska_Lv39 分钟前
mybatis+springboot+MySQL批量插入 1w 条数据——探讨
后端·架构
gqkmiss39 分钟前
Chrome 浏览器 134 版本新特性
前端·chrome·浏览器·chrome 浏览器
Mswanga44 分钟前
探秘 CSS 盒子模型:构建网页布局的基石
前端·css
I will.8741 小时前
如何使用 CSS 实现黑色遮罩效果
前端·javascript·css