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镜像。这条命令执行的具体操作和含义如下:
-
docker build:这是Docker的构建命令,用于根据Dockerfile构建一个新的镜像。
-
-t javaweb:1.0 :这里的
-t
是标签(tag)标志,后面跟着的是镜像的名字和标签。在这个例子中,新建镜像的名字是javaweb
,标签是1.0
。这意味着一旦构建成功,新的镜像将被打上javaweb:1.0
的标签,方便后续使用和引用。 -
**.:最后的点(
.
)**代表当前目录。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