Docker系列(三)Dockerfile 离线构建镜像

时间:2022-06-08 04:29:56

一、Dockfile介绍:

  Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile。Docker程序将读取Dockerfile,根据指令生成定制的image。相比image这种黑盒子,Dockerfile这种显而易见的脚本更容易被使用者接受,它明确的表明image是怎么产生的。有了Dockerfile,当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻烦。

二、本文特点

  本文通过docker非联网状态下对docker镜像通过dockerfile搭建一个javaweb开发环境,其中jdk和tomcat都是来自本地,原始镜像,来自于本地已安装的centos原始镜像。

三、安装

  用Dockerfile构建一个Java的web环境,主要分为3步:

1、准备工作

  将jdk和tomcat的进行解压,并且与Dockerfile放在同一目录。

2、创建Dockerfile文件,并编辑

FROM centos:latest
MAINTAINER *** "***@******.com"
# 复制本地当前目录下的jdk到容器内
ADD jdk-8u77-linux-x64/ /usr/local/java/jdk-8u77-linux-x64/
# 配置jdk环境
ENV JAVA_HOME /usr/local/java/jdk1.8.0_77
ENV PATH $JAVA_HOME/bin:$PATH
ENV CLASSPATH .:$JAVA_HOME/lib # 复制本地当前目录下的tomcat到容器内
COPY apache-tomcat-8.0.33/ /usr/local/tomcat/apache-tomcat-8.0.33/
#RUN unzip /usr/local/tomcat/apache-tomcat-8.0.33.zip #添加运行权限
RUN chmod +x /usr/local/tomcat/apache-tomcat-8.0.33/bin/*.sh
RUN chmod +x /usr/local/java/jdk-8u77-linux-x64/bin/java EXPOSE 8080
# 定义执行入口
ENTRYPOINT /usr/local/tomcat/apache-tomcat-8.0.33/bin/startup.sh && /bin/bash

原始镜像是centos:latest,然后将jdk的和tomcat的安装包放到和dockerfile相同的目录下。

3、通过Dockerfile构建镜像

  在Dockerfile所在的目录下构建镜像。

docker build -t="redstarofsleep/javaweb" .

4、最后运行镜像

docker run -d -t -i -p 8081:8080 --name javaweb redstarofsleep/javaweb