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

相关推荐
codeejun2 小时前
每日一Go-73、云原生成本优化 —— 资源限制 & 指标驱动扩容
开发语言·云原生·golang
真上帝的左手6 小时前
11. 容器化 vs 虚拟化-K8s-工作负载实战
云原生·容器·kubernetes
张忠琳9 小时前
【kubernetes v1.21】(controller-manager part 1)kube-controller-manager 核心架构与启动流程
云原生·架构·kubernetes
HackTwoHub10 小时前
K8s综合渗透测试工具,集成信息搜集、权限逃逸、横向移动,一站式搞定全流程渗透测试工作
人工智能·安全·web安全·云原生·容器·kubernetes·系统安全
IT策士11 小时前
第 37 篇 k8s之调度进阶:亲和性、污点与容忍
云原生·容器·kubernetes
IT策士12 小时前
第 38 篇 k8s之RBAC 与 ServiceAccount 实战
云原生·容器·kubernetes
IT策士12 小时前
第 36 篇 k8s之资源管理:Requests、Limits 与 QoS
云原生·容器·kubernetes
章老师说14 小时前
B站网关事故背后:OpenResty 与 Lua 的稳定性代价
nginx·云原生·负载均衡·lua·openresty
半亩码田14 小时前
【.NET新特性·第4篇】.NET Aspire 入门:云原生开发新姿势
云原生·.net
装不满的克莱因瓶15 小时前
Spring 全家桶与 Spring 6 新特性详解:从 IoC 到云原生时代
java·spring·云原生·jdk·新特性·spring6