基于Dockerfile自定义镜像

基于Dockerfile自定义镜像并基于镜像启动容器运行web服务
一、镜像概念:镜像是将应用程序及其所需要的函数库,环境,依赖,配置打包而成。
二、镜像结构:包括三部分
1、基础镜像(BaseImage):应用依赖的系统函数库,环境,配置,文件等
2、层(layer):在BaseImage 上添加那装包,依赖,配置等,每次操作都形成新的一层
3、入口(entrypoint):镜像运行入口,一般是程序启动的脚本和参数
自定义镜像构建
Dockerfile就是一个文本文件,其中各个指令用来说明执行什么操作俩构建镜像,每一个指令都形成一个层layer.
下面是一个最基础的Dockerfile

#指定基础镜像
FROM. ubuntu:16.04
#配置环境变量,JDK的安装目录
E的V JAVA_ DIR=/usr/local
#拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_ _DIR/
COPY ./demo-test-0.0.1-SNAPSHOT.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

简化后的Dockerfile如下(将安装jdk交给官方镜像java:8-alpine来完成)

#指定基础镜像
FROM java:8-alpine
COPY ./demo-test-0.0.1-SNAPSHOT.jar /tmp/app.jar
#暴露端口
EXPOSE 8090
#入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

docker-demo.jar:你自己的微服务jar包
EXPOSE 8090:你自己的微服务端口,后面运行容器时会和容器端口做一个映射。
构建镜像并启动容器,运行web服务步骤:
1、启动docker
2、新建一个目录(我新建/docker-demo)
3、进入该目录,将前面准备好的Dockerfile、jdk、自己的微服务jar包一起上传到该目录下
在这里插入图片描述

4、构建镜像:docker build -t javaweb:1.0 .
javaweb:1.0 两部分组成镜像,名称:版本,这部分自己任意定
(注意:命令最后有个“.” 代表使用当前镜像创建,不要忽略)
在这里插入图片描述
5、启动容器:docker run --name web -p 8090:8090 -d javaweb:1.0
web:容器名(唯一)
-p 8090:8090:端口映射,前面是容器端口,后面是服务端口
-d:代表后台启动
javaweb:1.0 镜像
在这里插入图片描述
6、浏览器访问项目
在这里插入图片描述
7、查看日志:docker logs -f 容器名
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qiaojunt/article/details/125080110