解锁容器化世界:第一个Springboot镜像(入门篇)


前言

当看到这个标题的时候,是不是觉得特别简单,将jar包放到容器里,然后启动就ok了。当然最简单最基本的肯定是这样,但是绝对不仅仅是这样,比如我怎么查看容器里面的日志?难道每次都需要进入到容器里面查看吗,再比如我的应用想要挂载探针,比如SkyWalking的采集探针,这个探针在宿主机上怎么办?还比如部署一个Springboot可以,但是要部署上百个,端口怎么维护呢?仔细一想,头发开始掉了。本文会先已一个简单的demo举例子,然后再讲解真正企业实战是怎么部署的。(如果只停留在demo阶段,那么面试没有任何优势)


一、Dockerfile是什么?

构建容器服务一共可以分为四步
1,编写Dockerfile
2,docker build 构建镜像(根据Dockerfile构建)
3,docker run 镜像
4,docker push 镜像

第一步就是编写Dockerfile,Dockerfile是我们要打docker镜像的脚手架,也就是说我们的docker镜像就是根据Dockerfile来打的。(名称必须是这个,注意大小写)
先来看看一个简单的Dockerfile是什么样的

FROM  openjdk:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

可以看到,Dockerfile是由很多指令来组成,比如说FROM,COPY (一般情况话,我们的指令都是大写的,虽然小写的也不会报错,但是这是约定俗称的DockeFile中的指令都是大写的)

Dockerfile常见指令
1.FROM

FROM  openjdk:8

指定基础镜像,用于构建当前镜像的基础。也就是说我们要打镜像的基础包,我们程序运行所需要的环境,比如说Springboot运行需要java8,那就需要再jdk8的基础上构建自己的镜像。

2.COPY/ADD

COPY *.jar /app.jar

将文件从主机复制到镜像中。我们的镜像当中需要包含的文件,比如说需要jar包,就需要将jar包放到镜像中去,需要其他文件,比如说某些静态资源,我们同样可以使用COPY放到镜像当中去。要注意第一个参数为宿主机的地址,后面的参数为镜像地址。宿主机的地址可以使用相对路径,即./*.jar。

COPY和ADD有什么区别

  • ADD支持自动解压功能(只支持tar包解压),COPY不支持
  • ADD支持通过URL下载文件(不支持自动解压),COPY不支持

比如说:

ADD /home/user/test.tar.gz /opt  #此操作会自动将test.tar.gz解压

3.CMD/ENTRYPOINT

CMD ["--server.port=8080"]
ENTRYPOINT ["java","-jar","/app.jar"]

设置容器的启动命令,也就是我们docker run时,容器里面所执行的命令。

CMD和ENTRYPOINT有什么区别

  • ENTRYPOINT 作为启动命令时无法被docker run覆盖(如果docker run指定命令,会被认为成ENTRYPOINT的参数)
  • 如果ENTRYPOINT和CMD指令同时存在,则CMD的相关内容会被设置成ENTRYPOINT的参数

4.EXPOSE

EXPOSE 8080

指定容器对外暴露的端口,即docker容器启动后,通过什么端口访问它呢?一般情况下都配置成我们的tomcat端口。

二、构建镜像

1.文件位置

将我们的Dockerfile文件编写完成后,和需要打成镜像的jar包放到同一目录下。

2.docker build

 docker build -t  test:1.0.1 .

即镜像包的名称为test,版本号为1.0.1。如果不写后面的版本号,则版本号默认为latest。
3,查看打包好的镜像

docker images

在这里插入图片描述

3.启动镜像

docker run -d test

-d 为要以守护进程的方式运行镜像(后台运行)

4.查看实例

docker ps -a

在这里插入图片描述
可以看到,容器启动成功。

5.进入到容器里面

docker exec -it fa8f36aef96e /bin/bash

fa8f36aef96e 为上一步查看到的CONTAINER ID(实例id)

在这里插入图片描述

总结

我们的第一个Springboot镜像打包并且启动完成,下一篇会带大家看看企业里都是怎么编写DockerFile,以及都有哪些坑。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值