docker-使用Dockerfile制作镜像
最近项目中有使用docker,组内做了关于docker的培训,然后自己跟着研究了一下,大概了解如何使用。我是基于tomcat镜像制作(不需要安装jdk,配置环境变量),基于centos镜像制作需要安装jdk,配置环境变量,下面会详细写到。前提准备:在centos机器上安装好docker。
一、基于tomcat镜像
1. 搜索并tomcat镜像
docker search tomcat
2. 第一个的 stars最多,而且是官方的,就是你了~
下载镜像:
docke pull tomcat
查看本地镜像:
docker images
3. 制作Dockfile文件
(1)touch Dockerfile (没有Dockerfile 文件的话会自动创建一个)
(2)vim Dockerfile
# Base image to use, this nust be set as the first line(form会先从本地镜像查找,如果没有回去docker仓库下载)
FROM tomcat # Maintainer: docker_user <docker_user at email.com> (@docker_user)
MAINTAINER xtt #拷贝配置文件和项目war包
COPY xtt_only/usr/local/xinsight /usr/local/xinsight
ADD xtt_only/etl.war /usr/local/tomcat/webapps #配置端口号
EXPOSE 8080 # Commands when creating a new container
ENTRYPOINT ["/usr/local/tomcat/bin/catalina.sh", "run"]
(3)编译Dockerfile文件
docker build -t xtt:v1 .
备注:
1) -t xtt:v1 指定镜像名称为xtt ,tag为v1
2) 最后的一点(.)表示当前目录下的Dockerfile文件,会自动识别到当前路径下的Dockerfile文件
4. 运行此镜像,启动容器看是否成功
- 查看本地镜像:
docker images
- 运行此镜像:
docker run ee4
容器运行成功~
- 检查一下,查看当前正在运行的容器:
docker ps
二、基于centos镜像
需要下载jdk和tomcat安装包,并且在Dockerfile里面配置环境变量,其它保持不变。
1. 将jdk和tomcat安装包拷贝到虚拟机上
2. 修改Dockerfile文件
FROM docker.io/centos MAINTAINER xtt #切换镜像目录(类似cd命令),进入/usr目录
WORKDIR /usr #在/usr/下创建jdk目录,用来存放jdk文件
RUN mkdir jdk1.8.162 #将宿主机的jdk目录下的文件拷至镜像的/usr/jdk目录下
ADD jdk1.8.0_162 /usr/jdk1.8.162/ #将宿主机的tomcat目录下的文件拷至镜像的/usr/tomcat目录下,将etl的war拷贝到webapps目录下
RUN mkdir tomcat8.5.32
COPY tomcat8.5.32 /usr/tomcat8.5.32/
ADD xtt_only/etl.war /usr/local/tomcat/webapps
#拷贝项目环境配置文件
COPY xtt_only/usr/local/xinsight /usr/local/xinsight
#设置环境变量 ENV JAVA_HOME=/usr/jdk1.8.162 ENV JRE_HOME=$JAVA_HOME/jre ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH ENV PATH=/sbin:$JAVA_HOME/bin:$PATH #公开端口 EXPOSE 8080 #设置启动命令 ENTRYPOINT ["/usr/tomcat8.5.32/bin/catalina.sh","run"]
备注:
1) FROM 表示基于哪个基础镜像制作镜像,这里是基于ubuntu的最新镜像
2) MAINTAINER 表示由哪个人维护这个镜像
3) ADD 、COPY表示将宿主机上的文件复制到镜像的指定目录,ADD比COPY多一个特性:如果是压缩包拷贝过去会自动解压(源路径一定要是Dockerfile的相对路径)
4) ENV 表示指定环境变量
5) RUN 运行指定的命令,格式:RUN+ linux命令(RUN mkdir 创建目录)
6) EXPOSE 8080 指定暴露8080端口
7) ENTRYPOINT 进入点,后面跟的是需要执行的脚本
docker-使用Dockerfile制作镜像的更多相关文章
- Docker 0x05: Dockerfile制作镜像
目录 Dockerfile制作镜像 一句话什么是dockerfile dockerfile脚本指令 小结 Dockerfile制作镜像 dockerfile 可以是制作自己镜像的脚本文件,按照这个脚本 ...
- Docker build Dockerfile 构建镜像 - 二
Dockerfile 制作镜像 https://hub.docker.com/ 搜索需要镜像: https://hub.docker.com/_/centos/ 官方示例: centos:6 1.这里 ...
- 通过dockerfile制作镜像
Dockerfile是一个用于构建Docker镜像的文本文件,其中包含了创建Docker镜像的全部指令.就是将我们安装环境的每个步骤使用指令的形式存放在一个文件中,最后生成一个需要的环境. Docke ...
- Docker之dockerfile制作jdk镜像
目的: Dockerfile简介 Dockerfile制作jdk镜像 Dockerfile简介 了解dockerfile之前要先了解Docker基本概念和使用可参考:https://www.cnblo ...
- Docker —— 使用 Dockerfile 制作 Jdk + Tomcat 镜像
一.准备好Jdk和Tomcat apache-tomcat-8.5.50.tar.gz jdk-8u212-linux-x64.tar.gz 注意: Jdk 和 Tomcat 记得从官网下载,否则制作 ...
- Docker部署运行springboot项目,并使用Dockerfile制作镜像
前言: 本来是要搭建一个自动化部署分布式项目的服务器平台的,使用jenkins+k8s+ELK+springboot把一个简单的springboot项目给搞起来,由于工程太大,先分开把每个技术组件单独 ...
- docker(9)Dockerfile制作镜像
前言 如果我们已经安装了一个python3的环境,如果另一台机器也需要安装同样的环境又要敲一遍,很麻烦,这里可以配置Dockerfile文件,让其自动安装,类似shell脚本 Dockerfile编写 ...
- WIN7安装Docker Toolbox、制作镜像并发到阿里云
一.安装Docker Toolbox,并配置国内源加速 WIndows7不支持Hyper-v,所以只能采用Docker Toolbox的方式使用Docker.传送门:http://mirrors.al ...
- Docker之Alpine制作镜像且上传至阿里云
目的: Alpine制作jdk镜像 Alpine制作jre镜像(瘦身) Docker镜像上传至阿里云 Alpine制作jdk镜像 alpine Linux简介 Alpine Linux是一个轻型Lin ...
随机推荐
- Javascript高级编程学习笔记(10)—— 作用域、作用域链
昨天介绍了,JS中函数的作用域 什么词法环境之类的,可能很多小伙伴不太明白. 在今天的内容开始之前,先做个简短的声明: 词法环境这一概念是在ES5中提出的,因为词法环境主要用于保存let.const声 ...
- JavaScript对象编程-第3章
目录 Date对象 Math对象 数组对象 字符串对象 正则表达式对象 什么是对象 对象拥有属性和方法,属性各种数据类型,方法对属性中的数据进行操作. JavaScript的对象 内置对象 Date. ...
- Swift5 语言指南(十) 枚举
一个枚举定义了一个通用型的一组相关的值,使你在你的代码中的一个类型安全的方式这些值来工作. 如果您熟悉C,您将知道C枚举将相关名称分配给一组整数值.Swift中的枚举更灵活,并且不必为枚举的每个案例提 ...
- 注意:Tomcat Get请求的坑!
Tomcat8.5,当Get请求中包含了未经编码的中文字符时,会报以下错误,请求未到应用程序在Tomcat层就被拦截了. Tomcat报错: java.lang.IllegalArgumentExce ...
- 内存管理-slab[原理]
前言 主要讲解原理,基于2.6.32版本内核源码.本文整体思路:先由简单内存模型逐渐演进到当下通用服务器面对的内存模型,讨论每一个内存模型下slab设计需要解决的问题. 历史简介 linux内核运行需 ...
- python(leetcode)-350两个数组的交集
给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [4,9,5 ...
- 函数isNaN() parseFloat() parseInt() Math对象
isNaN() 定义和用法 isNaN() 函数用于检查其参数是否是非数字值. isNaN(x) x 是特殊的非数字值 NaN(或者能被转换为这样的值) console.log(isNaN(NaN)) ...
- 小程序flex容器
flex:默认:水平方向是主轴,垂直方向是交叉轴,分布在第四象限,项目时在主轴方向上排列, 排满之后在交叉轴方向上换行: 1.设置容器的属性 display:flex 通过设置坐标轴来设置项目的排列方 ...
- ubuntu16.04 程序开机自启动设置及启动优化
使用过程中,为了方便使用,有一些程序需要开机时自启动应用,下面将介绍一下ubuntu16.04下程序的开机自启动设置方法. 1 建立一个可执行程序的运行脚本如 keepalive.sh.内部写入要执 ...
- Gradle学习系列之读懂Gradle语法
转载地址: http://www.cnblogs.com/CloudTeng/p/3418072.html Gradle是一种声明式的构建工具.在执行时,Gradle并不会一开始便顺序执行build. ...