利用dockerfile构建镜像

利用dockerfile构建镜像,第1张

利用dockerfile构建镜像

文章目录
  • 前言
  • 一、dockerfile是什么?
  • 二、基础命令
    • 1.FROM
    • 2.MAINTAINER
    • 3.EXPOSE
    • 3.COPY
    • 4.WORKDIR
    • 5.VOLUME
    • 6.ENV
    • 7.ENTRYPOINT
  • 三 示例
  • 四 构建镜像
  • 五 运行
  • 总结


前言

docker流行的今天,许多项目在交付或者开源项目中都会附属一个东西-dockerfile,有了这个文件,你可以构建自己的镜像,在移植部署时,系统会自动帮你完成环境设置。方便简单


提示:以下是本篇文章正文内容,下面案例可供参考

一、dockerfile是什么?

Dockerfile是一个创建镜像所有命令的文本文件, 包含了一条条指令和说明, 每条指令构建一层, 通过docker build命令,根据Dockerfile的内容构建镜像,因此每一条指令的内容, 就是描述该层如何构建.有了Dockefile, 就可以制定自己的docker镜像规则,只需要在Dockerfile上添加或者修改指令, 就可生成docker 镜像.

二、基础命令 1.FROM docker镜像类似于积木,是一层一层搭建而成。所以想要构建最终的镜像文件,那么需要使用基础镜像文件作为地基,本次目的是将可运行的jar包构建为镜像,那么使用openjdk作为基础镜像文件
FROM openjdk:8  
2.MAINTAINER 维护者信息,可以标注作者和邮箱
MAINTAINER manc 827766234@qq.com
3.EXPOSE docker容器内部端口
EXPOSE 9527 
3.COPY 将宿主机文件复制到docker容器下,宿主机文件目录必须和dockerfile文件目录下
COPY package.json /usr/src/app
4.WORKDIR 配置工作目录,就是cd 到某个目录下执行命令
WORKDIR /usr/data
5.VOLUME 目录挂载,将docker容器中的目录和宿主机目录挂载
WORKDIR /usr/data /usr/local/tomcat
6.ENV 设置环境变量,如设置java环境变量,配置mysql账户密码
ENV JAVA_HOME /opt/jdk
7.ENTRYPOINT 容器命令指令 ENTRYPOINT 的作用和用法和CMD一样,但是又不同: 1.CMD命令会被docker run的命令覆盖而ENTRYPOINT不会 2.CMD和ENTRYPOINT都存在时,CMD的指令变成了ENTRYPOIN的参数,并且此CMD提供的参数被docker run后面的命令覆盖 3.可以使用json写法和shell命令写法
ENTRYPOINT ["java","-jar","-Xms256m","-Xmx512m",""]

三 示例
FROM openjdk:8
MAINTAINER manc 827766234@qq.com
WORKDIR /
EXPOSE 8080
ENTRYPOINT ["java","-jar","-Xms256m","-Xmx512m",""]
四 构建镜像

在dockerfile目录下移入需要构建的jar包,会默认使用当前目录的Dockerfile进行编译镜像,编译后的镜像名为imagename:v1

docker build -t imagename:v1 .
五 运行

以交互式方式启动容器,容器命名为contaniername,容器端口映射宿主机端口为8080,目录挂载data下

docker run -itd --name containername -p 8080:8080 -v /usr/data:usr/local/tomcat imagename bash
总结

dockfile解决了程序移植运行等问题,让程序交付后部署变得简单,但是这种方式在多个镜像部署和程序自动化运行时步骤变得繁琐,后面会出jenkins+dockerfile+.sh来实现自动化部署。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5697895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存