基础指令

FROM
  基于哪个镜像
MAINTAINER
  用来写备注信息,例如作者、日期等。
COPY
  复制文件进入镜像(只能用相对路径,不能用绝对路径)
ADD
  复制文件进入镜像(可以用绝对路径,假如是压缩文件会解压)
WORKDIR
  指定工作目录,假如路径不存在会创建路径
ENV
  设置环境变量
EXPOSE
  暴露容器端口到宿主机
RUN
  在构建镜像的时候执行一条命令,作用于镜像层面
  shell命令格式:RUN yum install -y net-tools
  exec命令格式:RUN [ "yum","install" ,"-y" ,"net-tools"]
ENTRYPOINT
  在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
CMD
  在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
  容器启动后执行默认的命令或者参数,允许被修改

安装jdk

同级目录下创建一个Dockerfile,必须叫这个名字
[root@localhost file]# ll
total 181296
-rw-r--r--. 1 root root 0 Oct 31 10:34 Dockerfile
-rw-r--r--. 1 root root 185646832 Mar 28 2019 jdk-8u181-linux-x64.tar.gz 编写Dockerfile
[root@localhost file]# vim Dockerfile
[root@localhost file]# cat Dockerfile # 基于cntos7,如果没有这个镜像那么它会下载这个镜像。
FROM centos:7
# 创建者(这个可以不写)
MAINTAINER 吴磊
# 为Dockerfile中所有RUN、CMD、ENTRYPOINT、COPY和ADD指令设定工作目录
WORKDIR /usr
# 执行命令(这里创建了一个目录)
RUN mkdir /usr/local/java
# 和copy一样,复制文件到指定目录,但是copy不能解压,add自动解压
ADD jdk-8u181-linux-x64.tar.gz /usr/local/java
# 重命名(不知道文件名可以现在宿主机解压后看一下)
RUN ln -s /usr/local/java/jdk1.8.0_181 /usr/local/java/jdk
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH 执行dockerfile文件,创建的镜像名为jdk1.8,最后面的点表示当前目录(即dockerfile所在目录)
[root@localhost file]# docker build -t='jdk1.8' . Sending build context to Docker daemon 201.8MB
Step 1/10 : FROM centos:7
---> 67fa590cfc1c
Step 2/10 : MAINTAINER 吴磊
---> Running in 82b0855b713c
Removing intermediate container 82b0855b713c
---> 6ba6c5306ef5
Step 3/10 : WORKDIR /usr
---> Running in 53f979aa515b
Removing intermediate container 53f979aa515b
---> 623ec9ba1c71
Step 4/10 : RUN mkdir /usr/local/java
---> Running in f074844393c7
Removing intermediate container f074844393c7
---> 05a226b05d2f
Step 5/10 : ADD jdk-8u181-linux-x64.tar.gz /usr/local/java
---> 99a917b34d5c
Step 6/10 : RUN ln -s /usr/local/java/jdk1.8.0_181 /usr/local/java/jdk
---> Running in ccdf92640d65
Removing intermediate container ccdf92640d65
---> 93d145bf041d
Step 7/10 : ENV JAVA_HOME /usr/local/java/jdk
---> Running in bcded531db5a
Removing intermediate container bcded531db5a
---> 715630eea4d3
Step 8/10 : ENV JRE_HOME ${JAVA_HOME}/jre
---> Running in c9aa4b7df0db
Removing intermediate container c9aa4b7df0db
---> 97050481ab7a
Step 9/10 : ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
---> Running in 0123f3ea1213
Removing intermediate container 0123f3ea1213
---> 8304bed832f1
Step 10/10 : ENV PATH ${JAVA_HOME}/bin:$PATH
---> Running in 66e39b8befef
Removing intermediate container 66e39b8befef
---> 437729c49ac1
Successfully built 437729c49ac1
Successfully tagged jdk1.8:latest 查看所有的镜像,此时就多了一个jdk1.8
[root@localhost file]# docker images REPOSITORY TAG I MAGE ID CREATED SIZE
jdk1.8 latest 437729c49ac1 14 seconds ago 584MB
centos 7 67fa590cfc1c 2 months ago 202MB 制作容器并进到容器里面(能看到java版本号就没问题了)
[root@localhost file]# docker run -it --name=jdk8 jdk1.8:latest /bin/bash
[root@98c7b9225445 usr]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@98c7b9225445 usr]#

部署jar包

[root@localhost demo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jdk1.8 latest 437729c49ac1 3 days ago 584MB
centos 7 67fa590cfc1c 2 months ago 202MB
[root@localhost demo]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES jar包同级目录创建Dockerfile
[root@localhost demo]# ll
total 15772
-rw-r--r--. 1 root root 16145495 Oct 31 22:03 app.jar
-rw-r--r--. 1 root root 301 Nov 4 02:03 Dockerfile
[root@localhost demo]# cat Dockerfile
# 基于jdk镜像
FROM jdk1.8:latest
# 创建一个目录
RUN mkdir /demo
# 将jar包copy到指定目录
ADD app.jar /demo/app.jar
# 启动命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Xmx512m","-Xms512m","/demo/app.jar"] 创建镜像,指定名称demo版本号为1.0.0
[root@localhost demo]# docker build -t='demo:1.0.0' .
Sending build context to Docker daemon 16.15MB
Step 1/4 : FROM jdk1.8:latest
---> 437729c49ac1
Step 2/4 : RUN mkdir /demo
---> Running in 0f115368bbc0
Removing intermediate container 0f115368bbc0
---> 50a35fe9a726
Step 3/4 : ADD app.jar /demo/app.jar
---> e240bfc406de
Step 4/4 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Xmx512m","-Xms512m","/demo/app.jar"]
---> Running in 746468a020dc
Removing intermediate container 746468a020dc
---> 3c66e4400e03
Successfully built 3c66e4400e03
Successfully tagged demo:1.0.0 容器创建成功
[root@localhost demo]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
demo 1.0.0 3c66e4400e03 6 seconds ago 600MB
jdk1.8 latest 437729c49ac1 3 days ago 584MB
centos 7 67fa590cfc1c 2 months ago 202MB 启动容器,映射到宿主机的9999端口
[root@localhost demo]# docker run -di --name=demo1 -p 9999:8080 demo:1.0.0
64584a03cd6f06b7750d4d30993186d7a8ed0c3212eccb0fa1573b9bedf935e7
[root@localhost demo]#

  

Dockerfile安装jdk1.8 、部署java项目的更多相关文章

  1. RedHat Linux 5.5安装JDK+Tomcat并部署Java项目

    与大家分享下RedHat Linux 5.5安装JDK+Tomcat并部署Java项目的步骤,希望对大家有用. 1.下载并安装jdk 虚拟机中安装RedHat Linux 5.5 64位企业版, 这里 ...

  2. CentOS安装tomcat并且部署Java Web项目具有一定的参考价值

    本篇文章主要介绍了CentOS安装tomcat并且部署Java Web项目,具有一定的参考价值,有需要的可以了解一下.(http://m.8682222.com) 1.准备工作 b.因为tomcat的 ...

  3. windows一键部署java项目

    windows一键部署java项目 因为公司需求,要在windows的环境上做一键部署启动java项目,同时还要支持从安装界面动态修改配置文件的IP地址.就像安装软件一样将jdk,tomcat,mys ...

  4. 通过Jenkins部署java项目

    部署java项目-创建私有仓库 Jenkins大多数情况下都是用来部署Java项目,Java项目有一个特点是需要编译和打包的,一般情况下编译和打包都是用maven完成,所以系统环境中需要安装maven ...

  5. tomcat部署java项目

    tomcat部署java项目 1.启动tomcat 进入到tomcat安装目录下的bin #cd /opt/tomcat/bin #./startup.sh // 执行重启命令 2.重建一个新目录导入 ...

  6. jenkins部署java项目,脚本文件放在远程仓库中 和jar一起打包(六)

    jenkins部署java项目到远程linux上,脚本文件和项目一起上传到gogs上,直接执行gogs上的脚本文件来执行项目 (1)新建maven项目 pom.xml的配置 <project x ...

  7. 阿里云部署java项目

    第一步:注册阿里云账号(如果有请看第二步) 1.百度搜索阿里云,点击进入阿里云官网 2.点击右上角免费注册 3.进入注册页面,按照要求填写信息 4.注册完成后登陆 登陆之后首先购买阿里云esc与服务器 ...

  8. git jenkins 部署java项目

    1.Java项目部署基本概述:  1.什么是Java项目?  2.为什么Java项目需要使用Maven编译?  3.手动实现Java项目构建?  4.手动实现Java项目架构图? 源码包   jar包 ...

  9. Win10搭建Jenkins部署Java项目(本机和远程Win10部署)

    目录 一.前言&背景 二.环境准备 三.插件安装 四.全局配置 Maven JDK Git Maven 五.新建项目并配置 新建项目 配置 1.Discard old builds 2.Thi ...

  10. 关于weblogic部署Java项目的包冲突问题

    我们可能会用各种应用服务部署我们的Java应用,比如Tomcat.WAS.weblogic等.Tomcat和WAS可能会比较少遇到一些奇怪的问题,但是用weblogic部署项目则经常遇到一些比如包冲突 ...

随机推荐

  1. python3笔记二十三:正则表达式之元字符

    一:学习内容 匹配单个字符与数字:..[].^.\d.\D.\w.\W.\s.\S 匹配锚字符(边界字符):^.$.\A.\Z.\b.\B 匹配多个字符:(xyz) .x?.x*..*.x+.x{n} ...

  2. 微信小程序支持windows PC版了

    微信 PC 版新版本中,支持打开聊天中分享的小程序,开发者可下载安装微信 PC 版内测版本进行体验和适配.最新版微信开发者工具新增支持在微信 PC 版中预览小程序 查看详情 微信 PC 版内测版下载地 ...

  3. android data binding jetpack II 动态数据更新

    android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...

  4. zipkin-client:brave核心代码思路整理

    Zipkin是分布式跟踪系统. 简单地理解,可以将Zipkin分为两部分. 一部分为Zipkin Server,其负责接受存储应用程序处理耗时数据,以及UI展示. 另一部分为Zipkin Client ...

  5. MySQL——逻辑分层与存储引擎

    MySQL是最受欢迎的开源SQL数据库管理系统,由Oracle Corporation开发,分发和支持. MySQL网站(http://www.mysql.com/)提供有关MySQL软件的最新信息. ...

  6. leetcode324 摆动排序II

      1. 首先考虑排序后交替插入 首尾交替插入,这种方法对于有重复数字的数组不可行: class Solution { public: void wiggleSort(vector<int> ...

  7. JavaScript日常学习2

    JavaScript 数据类型    字符串(String).数字(Number).布尔(Boolean).数组(Array).对象(Object).空(Null).未定义(Undefined). e ...

  8. 在mac下安装fiddler

    说明:学习fiddler好久了,一直以来也没形成文档,之前学的一些知识也快忘得差不多了:正好利用假期,把之前学的知识都捡起来,捋一遍,形成文档,供以后使用的时候参考和借鉴 一:下载Mono 因为fid ...

  9. AES256位加密

    目录 1.    算法简介 2.    算法流程 2.1 扩展密钥 2.2 轮密钥加 2.3 字节代替 2.4 行位移 2.5 列混淆 3.    总结 附录A 运算示例 1.算法简介高级加密标准(英 ...

  10. [Python]机器学习:Tensorflow实现线性回归

    源码 #> tutorial:https://www.cnblogs.com/xianhan/p/9090426.html # 步骤一:构建模型 # 1.TensorFlow 中的线性模型 ## ...