如果你已经熟悉 Docker 的基本使用, 可以直接从第 7 小节阅读, 直接看 Spring boot 实战 Docker 的部分内容.
Docker 提供了两个版本: 社区版 (CE) 和企业版 (EE).
Docker 社区版 (CE) 是开发人员和小型团队开始使用 Docker 并尝试使用基于容器的应用的理想之选.
Docker CE 有两个更新渠道, 即 stable 和 edge:
Stable 每个季度提供可靠更新;
Edge 每个月提供新功能更新. 一般我们选择 stable 可以了, 本文实战选择也是.
在 2016 年 10 月 13 日, 杭州. 云栖大会上, Docker 与阿里云宣布达成战略合作, Docker 的中国镜像仓库由阿里巴巴提供, 国内开发者可以免费使用.
今天我们的演示也使用阿里云 Docker 仓库. 我们选择的是 Linux Ubuntu 16.04 系统.
1, 安装首先安装传输加密组件, 然后来下载 docker
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
2: 安装阿里云 docker 安全协议 GPG 证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
3: 仓库写入软件源信息, 选择 stable 版本
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
4: 更新资源列表, 安装新版本 Docker-CE, 社区版本.
- sudo apt-get -y update
- sudo apt-get -y install docker-ce
5, 检查 Docker 版本, 是否成功安装
输入 docker version 命令, 可以查看安装的 Docker 版本信息.
6, 运行 Docker Hello World
最简单的例子就是 Hello world,docker 会从服务器拉去 hello world 镜像, 并且在本地运行.
sudo docker run hello-world
Docker 安装成功, 并且可以执行最简单的镜像, 入门例子. 下面开始安装特殊的镜像, MongoDB 作为例子.
7,Docker 制作 java Spring Boot 镜像
新建 Java Spring Boot 项目, 这里需要解除 Maven 自动构建 Docker 镜像, 使用辅助插件. 在项目里配置 POM.
推荐使用 Linux 或者 Mac OS 可以安装 docker, 因为 Maven 构建 Docker 镜像需要 Docker 服务器支持.
- <!-- tag::plugin[] -->
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- <version>1.4.9</version>
- <configuration>
- <repository>${docker.image.prefix}/${project.artifactId}</repository>
- </configuration>
- </plugin>
插件的 xml 配置
- <plugin>
- <groupId>
- com.spotify
- </groupId>
- <artifactId>
- docker-maven-plugin
- </artifactId>
- <version>
- 0.2.3
- </version>
- <configuration>
- <imageName>
- ${docker.image.prefix}/${project.artifactId}
- </imageName>
- <dockerDirectory>
- src/main/docker
- </dockerDirectory>
- <resources>
- <resource>
- <targetPath>
- /
- </targetPath>
- <directory>
- ${project.build.directory}
- </directory>
- <include>
- ${project.build.finalName}.jar
- </include>
- </resource>
- </resources>
- </configuration>
- </plugin>
创建重要的 Dockerfile 文件, 用于打包镜像. 基本是程序的主要运行参数信息. 以及我们的 java Spring Boot 的 Jar 包.
- FROM openjdk:8-jdk-alpine
- VOLUME /tmp
- ARG DEPENDENCY=target/dependency
- COPY ${
- DEPENDENCY
- }/BOOT-INF/lib /App/lib
- COPY ${
- DEPENDENCY
- }/META-INF /App/META-INF
- COPY ${
- DEPENDENCY
- }/BOOT-INF/classes /App
- ENTRYPOINT ["java","-cp","app:app/lib/*","hello.Application"]
Java Spring Boot 集成 Docker 插件的项目结构:
执行命令 mvn install dockerfile:build.
构建并生成 Docker 镜像文件, 可以选择上传到 DockerHub 服务器.
8,Docker 搜索 Spring Boot 镜像
我们也可以选择去 Docker Hub 拉去通用的镜像, 比如 MySQL,MongoDB,Redis,MQ 等,
使用 Docker Search 关键字 即可, 然后可以选择拉去需要的镜像, 节约时间.
9,Docker 拉去 Spring Boot 镜像
在命令中输入 sudo docker pull springio/gs-spring-boot-docker 等待下载.
10.Docker 运行 Spring Boot 应用
下载完毕以后, 我们就可以技术来使用 Docker 运行我们的 Spring Boot 应用. 使用命令:
sudo docker run -p 8080:8080 -t springio/gs-spring-boot-docker
如果没有错误, 应该正常启动, 端口是 8080, 我们这里访问 http://localhost:8080/hello 可以看到简单的字符串 Hello Docker.
基本就完成了, 大量的运维, 部署工作可以通过 Docker 来完成, 尤其是大规模集群, 几百, 上前台服务的情况. Docker 简化的配置, 统一部署的工作.
使用起来十分方便, 除了我们自己特殊的应用打包, 绝大部分的数据库, 中间件等都有官方的 Docker 镜像.
参考:
- http://maven.apache.org/install.html
- https://github.com/spring-guides/gs-spring-boot-docker
- https://docs.docker.com/samples/library/mongo/
《第 17 课: Spring Boot 2.0 实战 Docker 容器与架构原理》资料:
视频: https://yq.aliyun.com/live/880
PPT:https://yq.aliyun.com/live/880
阿里巴巴 Java 群超过 3000 人
直播地址: Java 技术进阶群
进群方式: 钉钉扫码入群
阿里巴巴 MongoDB 群
来源: https://yq.aliyun.com/articles/691596