- 前言
- 一、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:82.MAINTAINER 维护者信息,可以标注作者和邮箱
MAINTAINER manc 827766234@qq.com3.EXPOSE docker容器内部端口
EXPOSE 95273.COPY 将宿主机文件复制到docker容器下,宿主机文件目录必须和dockerfile文件目录下
COPY package.json /usr/src/app4.WORKDIR 配置工作目录,就是cd 到某个目录下执行命令
WORKDIR /usr/data5.VOLUME 目录挂载,将docker容器中的目录和宿主机目录挂载
WORKDIR /usr/data /usr/local/tomcat6.ENV 设置环境变量,如设置java环境变量,配置mysql账户密码
ENV JAVA_HOME /opt/jdk7.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来实现自动化部署。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)