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

相关推荐
prcyang29 分钟前
Docker Compose
运维·docker·容器
蜗牛^^O^32 分钟前
Docker和K8S
java·docker·kubernetes
脚踏实地的大梦想家32 分钟前
【Docker】安装全流程与配置完整镜像源(可安装 nginx)
运维·docker·容器
Zww08911 小时前
docker部署个人网页导航
运维·docker·容器
PeterJXL2 小时前
Docker-compose:管理多个容器
运维·docker·容器
海王正在撒网2 小时前
用 Docker 部署 Seafile 社区版
运维·docker·容器
Jiaberrr2 小时前
前端实战:使用JS和Canvas实现运算图形验证码(uniapp、微信小程序同样可用)
前端·javascript·vue.js·微信小程序·uni-app
everyStudy2 小时前
JS中判断字符串中是否包含指定字符
开发语言·前端·javascript
城南云小白2 小时前
web基础+http协议+httpd详细配置
前端·网络协议·http
前端小趴菜、2 小时前
Web Worker 简单使用
前端