利用Dockerfile构建自定义镜像

embedded/2025/1/1 6:29:08/

当一个系统开发完成,需要将系统打包为一个镜像文件,让docker能够运行该镜像,成为一个可以被访问的容器。

上述操作可以通过自定义镜像的方式来实现,本文章基于VMware虚拟机中安装的Centos7操作系统来完成。前面的操作步骤,可以参考之前的文章:

VMware下Centos7安装步骤-CSDN博客

Linux安装Docker-CSDN博客

Docker快速安装Tomcat-CSDN博客

1.Dockerfile是什么

Dockerfile是image镜像的描述文件,文件中的内容是基于docker的一些操作命令,作用是为了完成一个新镜像的制作。文件内容参考如下:

这个文件有点像linux中的sh脚本,像Windows系统的bat文件。

2.准备网站

创建文件夹docker-web,里面有一个html文件,html文件中写了一行代码。

html文件内容:

假设index.html就是已经开发好的网站。

3.编写Dockerfile文件

创建名为Dockerfile的文件,不要有扩展名。

Dockerfile文件里面写入如下内容:

#利用FROM命令设置基准镜像
FROM tomcat:latest
#cd /usr/local/tomcat/webapps
WORKDIR /usr/local/tomcat/webapps
#ADD用于复制本地文件到镜像中
ADD docker-web ./docker-web

内容解读:

1.新的镜像一般是基于已有镜像进行扩展,得到新的镜像文件。所以当前要创建的新镜像,是基于docker中已有的Tomcat镜像扩展而来。FROM tomcat意思是来自tomcat镜像,后面的 :latest,是tomcat镜像的版本号,这些信息通过docker images命令可以查询到。

2.查看tomcat镜像的目录结构,用于存放docker-web网站文件。

docker ps命令,查看可用容器:

可以查到tomcat容器是可用的,容器编号为:34ce86016c65

通过命令来创建可以与容器内部交互的ssh终端(简单说就是进入到容器的目录中)。

docker exec -it 容器编号 /bin/bash

进入容器内部,可以看到webapps目录,这个目录就是用来存放网站的目录,只有把网站文件放到这个目录下,才能够被访问。所以要把提前准备的网站放到该目录中。

所以就有了第二行的命令 WORKDIR /usr/local/tomcat/webapps,WORKDIR意思就是工作目录,像cd命令。将当前的工作目录跳转到/usr/local/tomcat/webapps中。

3.ADD命令是将文件复制到镜像中。

先把需要的文件放到/usr/local目录中,然后通过ADD命令复制到镜像中。

4.构建镜像

如果当前目录是在镜像里面,使用exit命令,退出镜像目录,然后将路径切换到Dockerfile所在的目录中,执行创建镜像的命令:

docker buildx build -t mywebapp:v1.0 .

mywebapp 是镜像的名称,v1.0是自定义的镜像版本,后面是Dockerfile所在目录(点代表当前目录)。

通过执行过程可以看到,做了三步操作:设置基准镜像、设置工作目录、复制文件。

通过docker images查看已经存在的镜像。

5.运行镜像

通过命令运行镜像,创建容器。

docker run -d -p 8001:8080 5c8c8b36e966

8001:8080,代表用8001端口映射容器内部的8080端口。5c8c8b36e966是镜像的ID。

查看运行中的镜像:

docker ps 

6.访问网站

浏览器地址栏输入ip:端口/网站名称/页面名称

到此为止,自定义了一个新的镜像(mywebapp),并运行了镜像,利用镜像创建容器。


http://www.ppmy.cn/embedded/149868.html

相关文章

知识碎片-环境配置

1.添加-i 下载快: pip install onnxruntime-gpu==X.X.X -i https://pypi.tuna.tsinghua.edu.cn/simple 2.ubuntu中没有vim如何更换源 备份:cp sources.list sources.list_bak 重写:echo “deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiver…

探索 Java 微服务的新趋势:现代工具与最佳实践

引言 随着企业级架构从单体应用逐渐向微服务迁移,Java 在这一领域依然保持了强大的竞争力。从经典框架 Spring Boot 到轻量级的新兴工具,Java 的生态系统不断推出新的方案,以应对微服务架构带来的挑战和复杂性。本文将围绕 Java 微服务的最新…

基于单片机的大型家禽养殖基地智能环境控制系统构建

摘要:我国是一个大型家禽养殖大国,无论是大型家禽养殖数量或是大型家禽相关产品总量都位居世界前列。但是我国的大型家禽相关产品的市场竞争力却表现的差强人意,与一些发达国家的同类产品相比还有较大的差距。导致这一情况主要是因为我国很多大型家禽养殖基地往往只关注大型…

springboot、spring、springmvc有哪些注解

Spring Boot 常用注解 虽然Spring Boot本身并没有引入大量新的注解,但它基于Spring框架,并整合了多种技术和库,使得开发者可以更方便地使用Spring框架的功能。在Spring Boot项目中,常用的注解主要来自于Spring框架本身。 ‌Sprin…

vite 多环境变量配置

创建.env.production、.env.develoment、.env.test 文件 配置不同环境的环境变量 例如: .env.production NODE_ENVproduction # API URL VITE_APP_API_URL/.env.develoment NODE_ENVdevelopment # API URL VITE_APP_API_URL/api修改package.json中scripts 在指…

AIGC时代的网络安全威胁与应急响应机制构建

文章目录 一、AIGC时代的网络安全威胁二、应急响应机制的构建三、代码示例《网络安全应急管理与技术实践》编辑推荐内容简介作者简介目录前言/序言 随着人工智能生成内容(AIGC)技术的迅猛发展,我们正步入一个前所未有的创新与变革的新时代。然…

android studio gradle 如何解决下载依赖一直卡住的问题

解决Android studio中下载gradle慢的方法 gradle下载的配置 终极解决方案 在 Android studio 中配置http代理 2. 配置clash verge 然后重新点击构建gradle就可以了

AI自动化编程:解放双手还是抢夺饭碗?

随着人工智能(AI)技术的飞速发展,AI自动化编程工具逐渐崭露头角。这些工具能够根据给定的需求自动生成代码片段甚至完整的程序,引发了广泛的担忧:程序员是否会因此被取代?但是,AI真的能理解复杂…