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

相关推荐
Dusk_橙子1 小时前
在K8S中,pending状态一般由什么原因导致的?
云原生·容器·kubernetes
Linux运维老纪16 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
Elastic 中国社区官方博客1 天前
使用 Ollama 和 Kibana 在本地为 RAG 测试 DeepSeek R1
大数据·数据库·人工智能·elasticsearch·ai·云原生·全文检索
Linux运维老纪2 天前
windows部署deepseek之方法(The Method of Deploying DeepSeek on Windows)
linux·人工智能·分布式·云原生·运维开发·devops
Elastic 中国社区官方博客2 天前
Elastic Cloud Serverless 获得主要合规认证
大数据·数据库·elasticsearch·搜索引擎·云原生·serverless·全文检索
超级阿飞2 天前
在K8s中部署动态nfs存储provisioner
云原生·容器·kubernetes·nfs
赵渝强老师3 天前
【赵渝强老师】K8s中Pod探针的TCPSocketAction
云原生·容器·kubernetes
努力的小T3 天前
Linux二进制部署K8s集群的平滑升级教程
linux·运维·服务器·云原生·容器·kubernetes·云计算
2的n次方_3 天前
Eureka 服务注册和服务发现的使用
spring boot·spring cloud·云原生·eureka·服务发现
赵渝强老师3 天前
【赵渝强老师】K8s中Pod探针的ExecAction
云原生·容器·kubernetes