Docker镜像结构和自定义镜像

目录

镜像结构

Dockerfile自定义镜像

什么是Dockerfile?

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

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

总结


镜像结构

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成

  • 镜像是分层结构,每一层称为一个Layer
  • BaseImage层:包含基本的系统函数库、环境变量、文件系统
  • Entrypoint:入口,是镜像中应用启动的命令
  • 其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置

Dockerfile自定义镜像

什么是Dockerfile?

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层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

 更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder

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

  • 步骤1:新建一个空文件夹docker-demo
  • 步骤2:拷贝docker-demo.jar文件到docker-demo这个目录
  • 步骤3:拷贝jdk8.tar.gz文件到docker-demo这个目录
  • 步骤4:拷贝Dockerfile到docker-demo这个目录
  • 步骤5:进入docker-demo
  • 步骤6:运行命令:
docker build -t javaweb:1.0

最后访问 http://192.168.40.140:8090/hello/count,其中的ip改成你的虚拟机ip

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

  • 实现思路如下:
    • 新建一个空的目录,然后在目录中新建一个文件,命名为Dockerfile
    • 拷贝docker-demo.jar到这个目录中
    • 编写Dockerfile文件:
      • 基于java:8-alpine作为基础镜像
      • 将app.jar拷贝到镜像中
      • 暴露端口
      • 编写入口ENTRYPOINT
    • 使用docker build命令构建镜像
    • 使用docker run创建容器并运行

总结

  1. Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
  2. Dockerfile的第一行必须是FROM,从一个基础镜像来构建
  3. 基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BergerLee

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

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

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

打赏作者

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

抵扣说明:

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

余额充值