一、 编写Dockerfie

如下,Dockerfile 与 jdk 的gz包在同一级目录

From centos

MAINTAINER gnauhsil

RUN mkdir /usr/local/jdk8

ADD jdk-8u191-linux-x64.tar.gz /usr/local/jdk8

ENV JAVA_HOME /usr/local/jdk8/jdk1.8.0_191

ENV JRE_HOME /usr/local/jdk8/jdk1.8.0_191/jre

ENV PATH $JAVA_HOME/bin:$PATH

1.基础镜像:FROM java:8,当前镜像是基于哪个镜像的,第一个指令必须是FROM

2.作者:MAINTAINER mynah

3.RUN, 构建镜像时需要运行的指令

4.ADD shop.jar /shop.jar,将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包。

5.镜像要暴露的端口,如要使用端口,在执行docker run命令时使用-p生效 EXPOSE 8099

6.在镜像运行为容器后执行的命令: ENTRYPOINT ["java","-jar","/shop.jar"]

7. ENV, 用来在构建镜像过程中设置环境变量。

8. COPY, 类似于ADD,拷贝文件和目录到镜像中。将从构建上下文目录中

<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置

9.VOLUME, 容器数据卷,用于数据保存和持久化工作。

10.CMD, 指定一个容器启动时要运行的命令(对一个容器来说是变化的)。Dockerfile中只能有一个CMD命令,多个命令只有最后一个生效!

11. ENTRYPOINT, 指定一个容器启动时要运行的命令(对一个容器往往是固定的),ENTRYPOINT的目的和CMD一样,都是在指定容器启动成为那个徐及其参数!

二、 进行构建

docker build -t jdk8u191:v1 .

如何查看一个挂了的镜像是什么原因,没有日志怎么看?

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐