自定义镜像
镜像结构:镜像是将应用程序及所需要的系统函数库,环境,配置,依赖打包而成
入口(Entrypoint):镜像运行入口,一般是程序启动的脚本和参数
层(Layer):在BaseImage基础上添加安装包、依赖、配置等,每次操作都会形成新的一层
基础镜像(BaseImage):应用依赖的系统函数库、环境、配置、文件等
Dockerfile就是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像。每个指令都会形成一层Layer
基于Ubuntu镜像构建一个新的镜像,运行一个java项目
1.新建一个空文件夹docker-demo
2上传docker-demo.jar文件到docker-demo这个目录
3.上传jdk8.tar.gz文件到docker-demo这个目录
4.拷贝Dockerfile到docker-demo这个目录
Dockerfile:
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
5.进入docker-demo
6.运行命令
最后的点表示DockerFile所在目录
docker build -t javaweb:1.0 .
构建成功
运行
docker run --name web -p 8090:8090 -d javaweb:1.0
访问http://192.168.205.128:8090/hello/count
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXaqwPBd-1660868710785)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220814165631860.png)]
基于java:8-alpine镜像
修改Dockfile
运行
docker build -t javaweb:2.0 .