一键部署 Spring Boot 到远程 Docker 容器
关于 Docker
Docker 是用 go 语言编写的,这也是 go 语言近些年越来越火的原因之一。关于 Docker,有 3 个重要的概念需要了解下:
- image:镜像,一个文件,用来创建容器;如果你有 Windows 装机经历,那可以很好理解镜像这个词的含义,反正我年少的时候没少把 Windows 镜像刻盘重装系统。
- container:容器,一个可运行的镜像实例,里面运行着一个完整的操作系统,可以做一切你当前操作系统可以做的事情。
- Dockerfile:镜像构建的模板,描述镜像构建的步骤。
它们之间的关系是,通过 Dockerfile 构建出镜像,然后通过镜像构建容器,容器里可以跑程序。另外,一个镜像可以创建多个容器,每个容器之间是相互隔离的。
对于我们开发人员来说,Docker 可以做到:
- 编写本地代码
- 使用 Docker 将程序推送到测试环境
- 发现 bug 后在开发环境下修复,重新部署到测试环境测试
- 测试完成后,推送到生产环境
在这个过程中,Docker 提供的是开发环境、测试环境和生产环境的一致性,细细想一下,是不是挺恐怖的。。。。。
以后我们开发人员再说什么“我本地运行的好好的呀”就甩不了锅了,哈哈。
Java 程序员应该对 Docker 这句宣传语很熟悉:
Build once,Run anywhere(搭建一次,到处能用)
Docker 采用的是 CS 架构,客户端与 Docker 守护进程交互,后者负责构建、运行和分发 Docker 容器的工作。
Docker 的应用场景非常丰富,比如说:
- 自动打包和部署应用
- 创建轻量、私有的PaaS环境
- 自动化测试和持续集成/部署
- 部署并扩展Web应用、数据库和后端服务器
- 创建安全沙盒
- 轻量级的桌面虚拟化
安装 Docker
Docker Engine(引擎)需要安装在 64 位的 Linux 服务器上(32 位不支持),并且需要一些先决条件(针对 CentOS 系统):
PS:Linux 社区已不再维护 CentOS 8,导致 yum 源需要切换,后面打算把系统切换为 Anolis或Alinux
- 必须是 CentOS 7 或者 8版本,以下版本不支持
- centos-extras 存储库必须是启用的,一般是启用的,如果没启用的话,需要手动启用
- 推荐使用 overlay2(戳链接了解)存储驱动
我的云服务器安装的是 CentOS 系统,所以这里就以 CentOS 作为演示环境。我个人更喜欢 RPM(Red-Hat Package Manager,红帽软件包管理器)安装包的方式,简单高效。
第一步,安装 yum-utils 工具包。
yum install -y yum-utils
第二步,使用 yum-utils 提供的 yum-config-manager 工具配置 Docker 的安装仓库。
yum-config-manager \--add-repo \https://download.docker.com/linux/centos/dock