目录
镜像结构
什么是Dockerfile
常见的镜像在DockerHub能找到,但是我们自己写项目得自己构造镜像;
镜像结构
作用:提高复用性,当应用需要更新时,不再是整个系统重装进行更新 ,而是对需要更新的部分进行更新,其他地方不动——>这就是分层的好处
每做一次新的操作会产生新的一层
简单来说,镜像就是在系统函数库、运行环境的基础上添加应用程序文件、配置文件,然后合并后+编写好的启动脚本(镜像运行的入口)一起形成的文件
所以说,构建镜像,就是实现上述打包过程;
什么是Dockerfile
构建自定义镜像,如果一个个文件去拷贝打包,会非常麻烦;
我们只需要告诉Docker,我们镜像的组成结构,需要哪些BaseImage、拷贝哪些依赖,需要哪些启动脚本,那么Docker将会帮助构建镜像;
而DockerFile:是一个文本文件,里面的指令描述了要什么样的操作来构建镜像;
更新详细语法说明,请参考官网文档:Dockerfile reference | Docker Documentation.
实例:构建Java项目
基于Ubuntu镜像构建一个新的镜像,运行一个Java项目
1.首先新建一个空文件夹docker-demo,然后将文件拷贝到里面
2.设置DockerFile中的内容(利用DockerFile指令设置镜像的每一层内容:就是函数库、依赖、环境啥的):
# 指定基础镜像 FROM ubuntu:16.04 # 配置环境变量,JDK的安装目录 ENV JAVA_DIR=/usr/local # 拷贝jdk和java项目的包 COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo.jar /tmp/docker-demo.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/docker-demo.jar
3.然后我们在当前目录下 执行docker build命令:创建镜像给到岛屿(本地)
4.最后运行镜像:
docker run --name javaweb -p 8090:8090 -d javaweb:1.0
5.访问http://102.168.188xxx:8090/hello/count即可



