Docker 部署前后端项目
Docker 部署前后端项目
平生不会相思,才会相思,便害相思。
简介:都是被逼的,从零开始一个Docker 部署九个微服务和三个前端项目。其中,这些服务需要用到Nacos、MySQL、Nginx、ElasticSearch、Kibana、Redis、JDK和 Minio 文件存储服务器。当然真实环境不会在一台服务器上或者一个Docker中安装部署这么多东西,由于本机只开了一台虚拟机所以是在同一个虚拟机中安装部署的,到正式环境上就把几个存储数据的和运行项目的分别安装部署到多个服务器上即可。
一、准备工作:
1、九个微服务+三个前端项目。
2、一台虚拟机,Linux 和Ubuntu 都可以,本次选择的是带有图形界面的Ubuntu 系统。
二、简单了解Docker
解决的问题
由于不同的机器有不同的操作系统,以及不同的库和组件,在将一个应用部署到多台机器上需要进行大量的环境配置操作。
Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。
与虚拟机的比较
虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。
启动速度
启动虚拟机需要先启动虚拟机的操作系统,再启动应用,这个过程非常慢;
而启动 Docker 相当于启动宿主操作系统上的一个进程。
占用资源
虚拟机是一个完整的操作系统,需要占用大量的磁盘、内存和 CPU 资源,一台机器只能开启几十个的虚拟机。
而 Docker 只是一个进程,只需要将应用以及相关的组件打包,在运行时占用很少的资源,一台机器可以开启成千上万个 Docker。
优势
除了启动速度快以及占用资源少之外,Docker 具有以下优势:
1. 更容易迁移
提供一致性的运行环境。已经打包好的应用可以在不同的机器上进行迁移,而不用担心环境变化导致无法运行。
2. 更容易维护
使用分层技术和镜像,使得应用可以更容易复用重复的部分。复用程度越高,维护工作也越容易。
3. 更容易扩展
可以使用基础镜像进一步扩展得到新的镜像,并且官方和开源社区提供了大量的镜像,通过扩展这些镜像可以非常容易得到我们想要的镜像。
镜像与容器
镜像是一种静态的结构,可以看成面向对象里面的类,而容器是镜像的一个实例。
镜像包含着容器运行时所需要的代码以及其它组件,它是一种分层结构,每一层都是只读的(read-only layers)。构建镜像时,会一层一层构建,前一层是后一层的基础。镜像的这种分层存储结构很适合镜像的复用以及定制。
构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。
三、Docker 安装与使用
准备一台虚拟机,Linux 和Ubuntu 操作系统的都可以,本人在VMWare 上两个操作系统都有安装,但是Ubuntu 的是有图形操作界面,用起来更舒适,所以接下来的操作都是基于Ubuntu 系统的,但是Linux 和Ubuntu 系统区别不大,命令什么的大多也通用。
安装
查看docker是否安装:
docker version