0%

基于Dockerfile自定义镜像

镜像结构

  • 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成
  • 结构:
    • 入口:镜像运行入口,一般是程序启动的脚本和参数
    • 层:在BaseImage基础上添加安装包、依赖、配置等,每次操作都形成新的一层
    • 基础镜像:应用依赖的系统函数库、环境、配置、文件等

什么是Dockerfile

Dockerfile是一个文本文件,其中包含一个个的指令,用指令来说明要执行什么操作来构建镜像,每一个指令都会形成一层Layer

指令 说明 示例
FROM 指定基础镜像 FROM centos:6
ENV 设置环境变量,可在后面指令使用 ENV key value
COPY 拷贝本地文件到镜像的指定目录 COPY ./mysql-5.7.rpm /tmp
RUN 执行Linux的shell命令,一般是安装过程的命令 RUN yum install gcc
EXPOSE 指定容器运行时监听的端口,是给镜像使用者看的 EXPOSE 8080
ENTRYPOINT 镜像中应用的启动命令,容器运行时调用 ENTRYPOINT java -jar xx.jar

案例1:基于Ubuntu镜像构建一个新镜像,运行一个java项目

  • 新建空文件夹docker-demo
  • 拷贝项目jar包、jdk、Dockerfile到该目录
  • 进入decker-demo

  • 运行命令

1
docker build -t javaweb:1.0 .
  • 创建镜像
1
docker run --name web -p 8090:8090 -d javaweb:1.0

案例2:基于java:8-alpine镜像,将一个Java项目构建为镜像

思路如下:

  • 新建空目录,新建Dockerfile文件
  • 拷贝项目jar包到该目录
  • 编写Dockerfile文件
    • 基于java:8-alpine作为基础镜像
    • 将app.jar拷贝到镜像中
    • 暴露端口
    • 编写入口ENTRYPOINT
  • 使用build命令创建镜像,run命令创建容器并运行
------ THEEND ------

欢迎关注我的其它发布渠道