Dockerfile:自定义镜像

Dockerfile 是一个文本文件,其中包含了一系列用于自动化构建Docker镜像的指令。通过编写Dockerfile,开发者能够明确地定义一个软件应用及其运行环境应该如何被封装进一个可移植、可重复构建的Docker镜像中。

第一步:在/tmp文件下新建docker-demo文件夹,把需要的jdk、dockerfile、jar包传入其中

其中Dockerfile文件内容为:

第二步:执行docker build -t javaweb:1.0 .语句

**docker build -t javaweb:1.0 .**是一条Docker命令,用于构建一个新的Docker镜像。这条命令执行的具体操作和含义如下:

  1. docker build:这是Docker的构建命令,用于根据Dockerfile构建一个新的镜像。

  2. -t javaweb:1.0 :这里的 -t 是标签(tag)标志,后面跟着的是镜像的名字和标签。在这个例子中,新建镜像的名字是 javaweb,标签是 1.0。这意味着一旦构建成功,新的镜像将被打上 javaweb:1.0 的标签,方便后续使用和引用。

  3. **.:最后的点(.)**代表当前目录。Docker会查找当前目录下的Dockerfile,并基于此文件中的指令逐条执行,最终生成一个新的Docker镜像。Dockerfile中包含了构建镜像所需的所有步骤,如设置基础镜像、复制文件、运行命令等。

总结起来,这条命令就是在当前目录下根据Dockerfile构建一个名为 javaweb,标签为 1.0 的Docker镜像。

第三步:输入命令:docker images,查看是否已经创建好Docker

第四步:输入docker run --name web -p 8090:8090 -d javaweb:1.0,用于创建一个全新的容器实例

docker run 是 Docker 的命令,用于运行一个新的容器实例。这条命令的具体参数含义如下:

  • --name web: 指定运行的新容器的名称为 "web",这样在后续操作中可以通过名称来引用或管理这个容器。

  • **-p 8090:8090:**端口映射,将宿主机(host machine)的8090端口映射到容器内部的8090端口。这意味着任何发送到宿主机8090端口的网络请求都将被转发到容器内监听8090端口的应用程序。

  • -d: 以守护进程(detached)模式运行容器,即在后台运行容器,并不会与当前终端绑定。

  • javaweb:1.0: 指定要运行的镜像名称及其标签。这里的 "javaweb" 是镜像的名字,"1.0" 是镜像的标签。这意味着 Docker 会根据这个名称和标签查找本地已经下载好的镜像,如果没有下载则会尝试从 Docker Hub 或其他注册表中拉取该镜像。

所以,整条命令的作用是:根据 javaweb:1.0 镜像创建并启动一个新的容器,容器名为 "web",并在后台运行。同时,将宿主机的8090端口映射到容器内部的8090端口,这样外部可以通过宿主机的8090端口访问容器内运行的应用服务。

总结:

1.Dockerfile的本质是一个文件,通过指令描述镜像的构建过程

2.Dockerfile的第一行必须是FROM,从一个基础镜像来构建

3.基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine

相关推荐
Serverless社区8 小时前
阿里云函数计算 AgentRun 全新发布,构筑智能体时代的基础设施
阿里云·云原生·serverless·函数计算
一叶飘零_sweeeet11 小时前
从 0 到 1 掌控云原生部署:Java 项目的 Docker 容器化与 K8s 集群实战指南
docker·云原生·kubernetes·项目部署
码路工人14 小时前
附录B:kubectl 命令速查表 - Kubernetes 集群管理必备指南
docker·云原生·容器
码路工人14 小时前
附录A:常用 Docker 命令速查表
docker·云原生·容器
罗技1231 天前
不用每次都改 `easysearch.yml` 也能改启动参数 —— 用 Docker 环境变量搞定一切
docker·容器·eureka
你好龙卷风!!!1 天前
SpringCloud,vue3应用使用AlibabaCloudToolkit自动化部署到远程服务器上的docker
云原生·自动化
FIN66681 天前
募投绘蓝图-昂瑞微的成长密码与未来布局
前端·后端·5g·云原生·信息与通信·射频工程·芯片
许泽宇的技术分享1 天前
.NET Aspire深度解析:重新定义云原生分布式应用开发的“秘密武器“
云原生·.net
2501_920047031 天前
k8s-ingress控制器
云原生·容器·kubernetes
K_i1341 天前
Docker、容器、虚拟机到底是什么
docker·微服务·云原生·容器·kubernetes