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