一、docker的安装
docker是近年比较火的一个开源的应用容器引擎,咱看半天也没太清楚到底有啥用,反正就是感觉像是一个linux的微缩版,这里暂不讨论,有些东西用着用着就知道他的好处及用途了,只是看的话很难真正理解。
PS补充:经过使用后,我目前是这样理解的:docker就是一个虚拟机,其中有三个概念:仓库,镜像,容器。仓库就类似于你ide的工作空间,镜像就相当于工作空间中未启动的项目,而容器则是项目启动的一个实例。镜像一启动,就会创建一个容器,启动几次就会创建几个容器。
我的服务器购买时选择的操作系统是CentOS,所以这里的安装环境也是CentOS
docker安装的话有两种方式,这里我们使用比较方便的yum安装
安装一些必要的系统工具:PS:sudo表示以管理员权限执行,如是root用户(最高权限)可不输入
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加软件源信息:
$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 缓存:
$ sudo yum makecache fast
安装 Docker-ce:
$ sudo yum -y install docker-ce
启动 Docker 后台服务
$ sudo systemctl start docker
测试运行 hello-world
$ docker run hello-world
出现下面界面代表docker安装成功了!
二、部署Springboot项目
我这里是新建了一个最简单的springboot项目
1.我们使用idea的maven插件将项目打包,也可以用其他方式打包,在此不赘述。
2.打包后编写Dockerfile文件,创建文件名为Dockerfile的文本文件,内容如下:
FROM java:8 VOLUME /ROOT ADD demo-0.0.1-SNAPSHOT.jar demo.jar RUN bash -c 'touch /demo.jar' EXPOSE 8080 ENTRYPOINT ["java", "-jar", "demo.jar"]
java:8是指Docker Hub上官方提供的java镜像,版本号是8也就是jdk1.8,有了这个基础镜像后,Dockerfile可以通过FROM指令直接获取它的状态——也就是在容器中java是已经安装的,接下来通过自定义的命令来运行Spring Boot应用:
VOLUME指向了一个/root的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。效果就是在主机的/var/lib/docker目录下创建了一个临时文件,并连接到容器的/root。
ADD将项目的jar文件作为app.jar添加到容器
RUN表示在新创建的镜像中执行一些命令,然后把执行的结果提交到当前镜像。这里使用touch命令来改变文件的修改时间,Docker创建的所有容器文件默认状态都是“未修改”。这对于简单应用来说不需要,不过对于一些静态内容(比如:index.html)的文件就需要一个“修改时间”。
EXPOSE 容器暴露端口
ENTRYPOINT 应用启动命令 参数设定
3.将此Dockerfile文件与项目jar包使用Xftp软件上传到服务器上
4.执行docker build命令,docker就会根据Dockerfile里你定义好的命令进行构建新的镜像。
执行docker images,可以看到新建的镜像
5.使用 指令:docker run -d -p 8080:8080 boot-docker运行该springBoot项目
最后测试一下:可以访问了哦
部署多个项目
docker ps可以查看当前创建的容器:
docker rm -f 容器id 可以删除容器
我们按照上述步骤再建立一个名为nginx-docker的镜像(取名为nginx-docker只是后期想接触nginx,这里没有任何关系)
现在有这两个准备部署的项目镜像了
我们分别向1001和1002为这两个镜像创建容器(选择1001和1002是为了大家可以访问进行测试,这两个端口我不会用):
其中-d代表后台运行,也可以换为-it,可以看到项目运行日志
现在访问看看
是没有问题的,大家也可以访问一下:http://106.53.90.29:1002/hello