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 -
-
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器