SpringBoot2.X在Docker中的部署(一)——Docker入门
1.前言
最近出于学习需求,需要搭建集群环境,然后使用Nginx作为反向代理服务器实现负载均衡。由于时间紧,VM安装调试非常麻烦,再加之mac笔记本跑VM内存不是很够,故而萌生了使用Docker镜像来快速搭建一套集群环境的念头。
在搭建集群过程中可谓是一步一坑,好在通过不断尝试以及查看博客,成功搭建并运行。但是在此过程中发现网上的资料众说纷纭,而且各种抄袭(不知道博主试没试过)。故而将自己的成功经验和查询的 有效资料(博客大佬经验) 做一个整理,供自己之后回顾以及参考。同时也提供给各位入坑萌新学习使用,使大家少走弯路。
2.开发环境
老规矩,先上我使用的环境
软件 | 版本 |
---|---|
Mac | 10.15.3 |
IDEA | 2019.03 |
Maven | 3.6.1 |
Docker | 19.03.8(稳定版) |
JDK | 1.8 |
注:重要的事情说三遍,JDK版本是1.8,JDK版本是1.8,JDK版本是1.8!!!
因为这关乎到后面是否可以成功部署!!!
3.Docker基本概念
本着凡事看官网的理念,我这里就把官网的概念复制过来,以保证文章阅读的完整性。
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
Docker 包括三个基本概念:
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
总结一句话来说,Docker就是一个开销极低的沙箱,可以用于部署应用。
4.Docker和VM的区别
Docker | VM | |
---|---|---|
开销 | 运行开销小 | 运行开销较大 |
便捷性 | 安装下载便捷,可移植性高 | 不便于移植 |
大小 | 镜像占用小 | 系统占用硬盘空间大 |
运行 | 运行在Docker容器引擎上 | 直接运行在物理硬件上 |
详细内容我就不在这里赘述,有需要详细了解的同学可以点击以下链接传送:
Docker与VM虚拟机的区别
5.Docker安装
在Mac系统上下载Docker有两种方式,一种是官网直接下载,另一种是通过命令行安装。
下面附上链接:
1.官网stable版本Docker下载
2.命令行安装传送门
6.Docker基本命令
这里我按照基本的使用来写,要是想了解更多命令,请点击下方传送门!!!
操作 | 命令 | 作用 | 示例 |
---|---|---|---|
搜索 | docker search 镜像名称 | 查询对应镜像以及版本 | docker search nginx |
拉取 | docker pull 镜像名称:标签 | 拉取指定版本的镜像,这个标签就是指版本 | docker pull nginx:latest |
启动 | docker run -d -p 本机端口号:镜像应用端口号 --name 启动实例名 镜像名 | 后台对镜像创建实例并启动 | docker run -d -p 80:8080 --name nginx-web nginx |
进入 | docker exec -it 镜像名称 /bin/bash | 进入创建的镜像实例的linux命令行界面 | docker exec -it nginx-web /bin/bash |
想要了解更多命令,请移步至Docker常用命令或Docker常用命令博客。
7.Docker镜像源设置
若使用Docker自带镜像源,下载进度条跑的比🐢还慢~,所以要使用国内的镜像源。但是使用国内镜像源也有点小坑,这个在之后叙述。
注:镜像源设置是个大坑,我网上找了好久,19.03版本中根本没有找到所谓的daemon设置。最后在知乎上才找到设置方法。
- 进入当前用户目录
cd /Users/你自己的用户名
- 显示当前目录下文件夹
ls -alh
应该是可以看到这个目录
- 进入
.docker
目录
cd .docker
- 修改
daemon.json
文件
vi daemon.json
- 向文件中追加下列JSON字符串
"registry-mirrors":["https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
最终内容:
- 保存并退出,重启Docker
PS:系列文章补充
SpringBoot2.X在Docker中的部署(一)——Docker入门
SpringBoot2.X在Docker中的部署(二)——SpringBoot2.X项目创建
SpringBoot2.X在Docker中的部署(三)——SpringBoot项目在Tomcat镜像中的部署