全栈小白的gravatar头像
全栈小白 2023-03-19 20:45:42
【docker】- Dockerfile技术

本期我们来说一说docker中的DockerFile

Dockerfile就是用来帮助我们构建一个自定义镜像的构建文件,是一个文件,那为什么要去构建镜像呢?DockerHub上提供的镜像不够吗?

当然不是,因为有些镜像无法满足我们的需求,举个例子吧,好比java项目的运行,大伙都知道,java项目打包方式一般会有两种,war和jar,war就比较简单了,扔到tomcat容器的webapps目录下就可以了,那jar呢?

jar包的部署就需要我们自己构建镜像了,jar运行需要jdk,那么我们就需要在这台机器中安装jdk

还会有这种情况哈,我们说过,docker容器类似于一个十分精简的linux机器,那么大家有没有发现,我们自己运行的tomcat、nginx等容器中都没有vim、ifconfig等命令,那我们想要编辑文件就难上加难了,有些小伙伴可能会说,我yum install vim不就行了,那么请看下图

【docker】- Dockerfile技术

不好意思,yum也没有,有些开发者会基于原有的镜像进行扩展,安装一些需要的软件

下面我们以部署jar的例子来说,学完你也可以用docker部署java项目

操作步骤

DockerFile指令,其实并用不到这么多

FROM                #基础镜像,一切从此处开始构建
MAINTAINER          #镜像是谁写的,姓名+<邮箱>
RUN                 #镜像构建的时候需要运行的命令
ADD                 #步骤,tomcat镜像,tomcat的压缩包!添加内容,会自动解压,可以写url地址,但是不解压
WORKDIR             #镜像的工作目录,可以写多个,第二个写相对路径,相对上一个
VOLUME              #挂载的目录
EXPOSE              #暴露的端口
CMD                 #指定这个容器启动时运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT          #指定这个容器启动时要运行的命令,可以追加
COPY                #类似ADD,将文件copy到镜像中
ENV                 #构建的时候设置的环境变量

构建命令

docker build -f Dockerfile -t cxs/centos:1.0 .
-f # Dockerfile文件地址,如果是官方推荐文件名,可以省略
-t:[tag] # 目标镜像名,及版本号

下面我们以部署java的jar项目为例,来构建一个镜像

首先准备一个jar包,(在本地已经创建了一个Springboot项目,写一个hello的接口,打成jar包,上传至linux机器)

【docker】- Dockerfile技术

编写Dockerfile文件

FROM java:8   # 运行jar项目要基于jdk,可以提前通过docker pull拉好
ADD hello-world.jar hello-world.jar   # 将hello-world.jar添加到容器中
EXPOSE 2023    # 声明端口2023
ENTRYPOINT ["java","-jar","hello-world.jar"]    # jar包运行命令,中间以,分开,还可以加jvm调优参数
CMD ["--server.port=2023"]  # 运行命令,可以在运行的时候被覆盖

Dockerfile

【docker】- Dockerfile技术

开始构建

docker build -t hello-world:1.0 .

注意:

  • 文件名叫Dockerfile时-f参数可以省略

  • 末尾有个.

【docker】- Dockerfile技术查看构建的镜像

【docker】- Dockerfile技术运行镜像

【docker】- Dockerfile技术访问测试:我虚拟机的ip是10.10.10.10

【docker】- Dockerfile技术


打赏

已有1人打赏

最代码官方的gravatar头像
最近浏览
流水本无情  LV9 3月13日
wenMN1994  LV13 2月6日
shy2850  LV4 2023年11月10日
deluser  LV3 2023年10月3日
小新Coding  LV9 2023年10月2日
527301883  LV1 2023年9月8日
凌秋枫  LV8 2023年8月28日
Sean_admin  LV7 2023年8月22日
yuyiyuyi  LV6 2023年8月2日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友