11、Docker 自定义镜像 Dockerfile

1、镜像

镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程。

在这里插入图片描述

在这里插入图片描述

2、Dockerfile

Dockerfile 就是一个文本文件,其中包含一个个 指令(Instruction),用指令来说明要执行什么操作来构建镜像。将来 Docker 可以根据 Dockerfile 帮助我们构建镜像。常用指令如下:

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

更多详细语法说明,参考 官网文档

我们基于 Ubuntu 基础镜像,利用 Dockerfile 描述镜像结构,也可以直接基于 JDK 为基础镜像,省略前面的步骤,如下图:
在这里插入图片描述

当编写好了 Dockerfile,可以利用 docker build -t myImage:1.0 . 命令来构建镜像。

  • -t:给镜像起名字,格式依然是 repository:tag 的格式,不指定 tag 时,默认为 latest
  • .:最后的点是指定 Dockerfile 所在目录,如果就在当前目录,则指定为 .

3、自定义镜像

3.1、自定义 Dockerfile

  1. 自备 docker-demo.jar 文件,并创建 Dockerfile 文件内容如下:
# 基础镜像
FROM openjdk:11.0-jre-buster
# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝 jar 包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]
  1. 将上面两个文件拷贝到准备好的目录下,运行 docker build -t docker-demo .
  2. 运行 docker images 查看是否创建好镜像
  3. 运行 docker run -d --name dd -p 8080:8080 docker-demo 启动
  4. 运行 docker logs -f dd 即可查看运行日志
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纯纯的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值