05-Dockerfile 构建镜像

五、Dockerfile构建镜像

5.1、Dockerfile文件

  • 经过前面的学习已经知道,要获得镜像,可以从Docker仓库中进行下载。那现在就带来一个问题,如果想要自己开发一个镜像,应该如何做?答案是使用Dockerfile
  • Dockerfile其实就是一个文本文件,由一系列命令和参数构成,Docker可以读取Dockerfile文件并根据Dockerfile文件的描述来构建镜像
  • Dockerfile文件内容一般分为4部分
    • 基础镜像信息
      • 如tomcat的运行环境是jdk,那么安装好jdk的容器就是属于tomcat容器的基础镜像
    • 维护者信息(作者)
    • 镜像操作指令
    • 容器启动时执行的指令

5.2、Dockerfile常用命令

  • Dockerfile常用命令如下

    • 命令 作用
      FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
      MAINTAINER user_name 声明镜像的创建者
      ENV key value 设置环境变量 (可以写多条)
      RUN command 是Dockerfile的核心部分(可以写多条), RUN指令在当前镜像的顶层上新建层执行命令,同时提交执行结果。提交的结果会在接下来的dockerfile处理
      ADD source_dir/file dest_dir/file 将宿主机的文件复制到镜像创建的容器内,如果是一个压缩文件,将会在复制后自动解压
      COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件并不能解压
      WORKDIR path_dir 设置工作目录

5.3、构建镜像

  • 这里以构建一个jdk的镜像为例(这个容器是安装好jdk的)

    • 具体执行流程如下所示

    • # 1、 创建目录
      mkdir dockerjdk8
      cd dockerjdk8
      # 2、 下载jdk-8u71-linux-x64.tar.gz并上传到服务器中的指定目录
      # 自行官网下载上传即可
      # 3、 在jdk的下载目录下创建Dockerfile文件,文件内容如下
      vim Dockerfile
      FROM centos:7 # 定义centos7作为基础镜像启动构建流程
      MAINTAINER COOLMAN # 声明镜像的创建者
      WORKDIR /usr # 指定工作目录
      RUN mkdir /usr/local/java # 创建文件夹
      ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/ # 将文件复制到指定文件夹(ADD指令会将压缩包自动解压)
      ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 # 声明JAVA_HOME环境变量
      ENV PATH $JAVA_HOME/bin:$PATH # 声明JAVA环境变量
      # 4、 执行命令构建镜像;PS:后面的那个 . 号(代表的是当前目录)
      # -t 指定镜像名称
      docker build -t='jdk1.8' .
      # 5、查看镜像是否建立完成
      docker images

5.4、根据镜像创建容器

  • 基于刚刚城建的镜像 jdk1.8 创建并启动容器进行测试

    • 具体操作如下所示

    • # 1、创建容器(这里用的守护式,直接使用交互式创建也没问题)
      docker run -di --name=myjdk8 jdk1.8
      # 2、查看容器是否创建成功
      docker ps | grep jdk
      # 3、进入容器
      docker exec -it myjdk8 /bin/bash
      # 4、验证java是否配置成功
      java -version
posted @   OnlyOnYourself-Lzw  阅读(55)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
点击右上角即可分享
微信分享提示