前置准备
- 需要CentOS 7 64位,虚拟机或物理机都可以。参考:安装CentOS7教程
- 需要一个SpringBoot项目,Demo级别即可。
- 了解yum,会简单使用和设置源。配置163yum源
- 会初步使用vi、vim指令,便于编写Dockerfile。
安装Docker
官方脚本自动安装
就像执行了本地的.sh脚本文件,只不过内容在网上请求到。
如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
或国内daocloud
curl -sSL https://get.daocloud.io/docker | sh
如果是Linux学习者,建议走一遍手动安装过程。
手动安装
- 如果之前安装过docker,需要卸载之前的版本,执行:
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装所需软件包(此步骤最好已经设置yum源为国内源,方便快捷)
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
- 安装特定版本的 Docker Engine-Community
列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序
$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
- 通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。
此处建议安装18.x版本,若后续学习K8S,K8S的1.15版本则比较匹配docker18.x版本。
注意:下列命令不可直接执行,需要你自定义版本
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
- 安装后启动Docker
$ sudo systemctl start docker
- 通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community
$ sudo docker run hello-world
出现下面反馈,则为安装成功
部署准备
- 需要将SpringBoot项目打包成jar包,如IDEA方式:
- 需要将jar文件传到CentOS系统一个自定义目录下,如/home/yourname/dockerDemo
部署
- ssh工具连上你的CentOS7主机,在刚刚拥有jar文件的/home/yourname/dockerDemo目录下操作
- 在/home/yourname/dockerDemo目录下编写Dockerfile文件
执行:
vi Dockerfile
写入:
# Docker image for springboot file run
# VERSION 0.0.1
# Author: yourname
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER yourname <your@163.com>
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD 你的jar包名.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
文件解释:
VOLUME 指定了临时文件目录为/tmp
效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。该步骤是可选的,如果涉及到文件系统的应用就很有必要了。
/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
项目的 jar 文件作为 “app.jar” 添加到容器
ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/./urandom” 作为 Entropy Source
如果是第一次打包,它会自动下载java 8的镜像作为基础镜像,以后再制作镜像的时候就不会再下载了。
- 制作镜像什么是docker镜像
执行:
docker build -t 镜像名 .
-t 参数是指定此镜像的tag名,最后面有个"."点
- 启动容器,并测试
执行:
docker run -d -p 8090:8090 镜像名
若无报错信息,直接访问http://你的服务器ip地址:8090/
部署完成。