当前位置: 首页 > news >正文

Docker入门(二) - Dockerfile

Dockerfile

执行Dockerfile

  • FROM <image>:<tag> 指定镜像
  • MAINTAINER <name> 维护者
  • RUN <command> 运行命令
  • CMD 为容器提供默认值,默认提供给ENTRYPOINT,docker命令添加参数可覆盖原有的
  • RUN 执行任何指令并提交结果,用于Dockerfile的下一步工作
  • EXPOSE 暴露端口号
  • ENV <key> <value> 环境变量
  • ADD <src> <dest> 从<src>复制新文件,目录或远程文件URL,并将它们添加到路径<dest>的映像文件系统。
  • COPY <src> <dest> 从<src>复制新文件或目录,并将它们添加到容器的文件系统,路径<dest>。
  • ENTRYPOINT 允许您配置将作为可执行文件运行的容器。docker命令添加参数可覆盖不原有的,如想覆盖需要添加--entrypoint
  • VOLUME 创建具有指定名称的安装点,并将其标记为从本机主机或其他容器保留外部安装的卷。
  • USER 指定运行容器的用户名
  • WORKDIR 为Dockerfile中的任何RUN,CMD,ENTRYPOINT,COPY和ADD指令设置工作目录

vim Dockerfile

FROM centos:latest

MAINTAINER ellis xxx@qq.com

# OS环境配置
RUN yum clean all
RUN yum install -y wget

# 安装JDK
RUN mkdir /var/tmp/jdk
RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  -P /var/tmp/jdk http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
RUN tar xzf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz -C /var/tmp/jdk && rm -rf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz

#设置环境变量
ENV JAVA_HOME /var/tmp/jdk/jdk1.8.0_151
ENV CATALINA_HOME /var/tmp/tomcat/apache-tomcat-8.5.8
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

#暴露端口
EXPOSE 7070

#上传工程包
RUN mkdir -p /test/demo

COPY cloud-eureka-server-0.0.1-SNAPSHOT.jar /test/demo

ENTRYPOINT ["sh", "-c", "cd /test/demo;java -jar cloud-eureka-server-0.0.1-SNAPSHOT.jar"]

创建test-dockerfile的仓库

➜  docker build -t test_demo .
Sending build context to Docker daemon  51.35MB
Step 1/14 : FROM centos:latest
 ---> a8493f5f50ff
Step 2/14 : MAINTAINER ellis 282390074@qq.com
 ---> Using cache
 ---> c634b5fb0309
Step 3/14 : RUN yum clean all
 ---> Using cache
 ---> 0dd52fc7970b
Step 4/14 : RUN yum install -y wget
 ---> Using cache
 ---> 1f2ff9aa7889
Step 5/14 : RUN mkdir /var/tmp/jdk
 ---> Using cache
 ---> 48a810aafba3
Step 6/14 : RUN wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  -P /var/tmp/jdk http://download.oracle.com/otn-pub/java/jdk/8u151-b12/e758a0de34e24606bca991d704f6dcbf/jdk-8u151-linux-x64.tar.gz
 ---> Using cache
 ---> 88372ad590d7
Step 7/14 : RUN tar xzf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz -C /var/tmp/jdk && rm -rf /var/tmp/jdk/jdk-8u151-linux-x64.tar.gz
 ---> Using cache
 ---> b415f3947273
Step 8/14 : ENV JAVA_HOME /var/tmp/jdk/jdk1.8.0_151
 ---> Using cache
 ---> 25cf99b2d7e2
Step 9/14 : ENV CATALINA_HOME /var/tmp/tomcat/apache-tomcat-8.5.8
 ---> Using cache
 ---> cd33c693ec97
Step 10/14 : ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
 ---> Using cache
 ---> 8503dab918cd
Step 11/14 : EXPOSE 7070
 ---> Using cache
 ---> e8d866b900d7
Step 12/14 : RUN mkdir -p /test/demo
 ---> Using cache
 ---> a4be88f4d72d
Step 13/14 : COPY cloud-eureka-server-0.0.1-SNAPSHOT.jar /test/demo
 ---> Using cache
 ---> dc61e44cbd4b
Step 14/14 : ENTRYPOINT sh -c cd /test/demo;java -jar cloud-eureka-server-0.0.1-SNAPSHOT.jar
 ---> Using cache
 ---> b756a23f0a24
Successfully built b756a23f0a24
Successfully tagged test_demo:latest

执行的时候还是需要-p指定端口映射关系,才能正常访问。-d为以守护进程方式运行

➜  docker run -d -p 7070:7070  test_demo:latest
cf5bd9b29030bbaaf1cc20344dd7489b2bb2aca31ddabd2e0d3414ec6d6589ff

然后就可以正常访问了

相关文章:

  • Delphi XE以后的版本 程序如何瘦身
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • Java NIO系列教程(三) Channel之Socket通道
  • 构建工具 - 收藏集 - 掘金
  • Kettle6.0表输入连接数据库
  • c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别...
  • 1.2 Use Cases中 Event Sourcing官网剖析(博主推荐)
  • 【Java基础】类和接口
  • 设计模式之原型模式
  • python3 django mysql 连接池说明
  • 【Spring源码分析】AOP源码解析(下篇)
  • 深入浅出设计模式(四)
  • scala-基础-映射(1)
  • struts2的核心和工作原理
  • Linux 有问必答:在 Linux 如何更改文本文件的字符编码
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • JS笔记四:作用域、变量(函数)提升
  • Redash本地开发环境搭建
  • Vue2.0 实现互斥
  • windows-nginx-https-本地配置
  • 创建一个Struts2项目maven 方式
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 仿天猫超市收藏抛物线动画工具库
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 设计模式走一遍---观察者模式
  • 手写一个CommonJS打包工具(一)
  • 思维导图—你不知道的JavaScript中卷
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 新手搭建网站的主要流程
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 云大使推广中的常见热门问题
  • Python 之网络式编程
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​iOS安全加固方法及实现
  • ​Java并发新构件之Exchanger
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (1)常见O(n^2)排序算法解析
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (笔试题)分解质因式
  • (待修改)PyG安装步骤
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (转)为C# Windows服务添加安装程序
  • ***详解账号泄露:全球约1亿用户已泄露
  • *ST京蓝入股力合节能 着力绿色智慧城市服务