如何使用docker创建一个容器

如何使用docker创建一个容器

Dockerfile文件

一切都始于一个Dockerfile。Docker通过读取Dockerfile中的指令来构建镜像。Dockerfile是一个文本文件,包含了构建源代码的指令。Dockerfile指令语法由Dockerfile参考规范定义。

Dockerfile的作用:Dockerfile定义了在构建Docker镜像时必须遵循的步骤和规则,它包括从基础镜像开始,到安装必要软件,再到运行特定命令等一系列操作。每一条指令都会在Docker镜像中创建一个新的层,这些层将会按照定义的顺序叠加起来,形成最终的镜像。

Docker 镜像

Docker镜像是轻量级、可执行的软件包,包含运行应用所需的所有内容,例如代码、运行时、库、环境变量和配置文件。它们提供了应用运行的完整文件系统,确保应用在任何支持Docker的环境中都能以一致的方式运行。镜像是不可变的,这意味着一旦创建,内容就不能被改变,确保了部署的一致性和可靠性。

Docker镜像采用分层存储的方式构建,每一层代表Dockerfile中的一个指令,层与层之间可以共享,这样不仅提高了存储效率,也加速了镜像的构建与传输。使用Docker时,你可以从Docker Hub或其他Docker注册中心拉取已存在的镜像,或者基于Dockerfile自行构建新的镜像。

镜像和Dockerfile文件的关系

Dockerfile与Docker镜像之间存在直接的关联关系。Dockerfile是一个包含了一系列指令和参数的文本文件,这些指令定义了如何从基础镜像开始构建新的Docker镜像。每一个指令通常都会添加一个新的层到镜像上,例如复制文件、安装软件包或执行其他操作。

简而言之,Dockerfile是镜像构建的“配方”,指导Docker如何步骤地构建镜像。执行docker build命令时,Docker会读取Dockerfile中的指令,逐步执行这些指令,最终生成一个新的Docker镜像。这个镜像随后可以用来运行容器,确保了应用的一致性和可移植性。

给Java应用程序创建容器

创建一个适用于Java应用程序的Docker容器涉及将应用程序及其依赖项封装到一个镜像中。这使得应用程序可以在任何安装了Docker的环境中运行,无论底层操作系统是什么。

# 使用 Java 17 运行时环境作为基础镜像
FROM openjdk:17-jdk-slim

# 将工作目录设置为 /app
WORKDIR /app

# 将编译好的 Java 应用程序复制到容器中
COPY target/my-app.jar myapp.jar

# 设置容器启动时运行的命令
CMD ["java", "-jar", "myapp.jar"]

启动容器

要启动Java容器,你可以使用docker run命令,后跟镜像名称。例如,如果你的镜像名为java-app,可以运行:

docker run -d --name my-java-app -p 8080:8080 java-app

这个命令会在后台启动容器,将容器内部的8080端口映射到宿主机的8080端口。

在Docker命令中,docker run -d中的-d标志用于在“分离模式”(detached mode)下运行Docker容器。这意味着容器会在后台运行,当前终端不会被阻塞或接收来自容器的输出。用户可以继续在同一个终端会话中执行其他命令,而容器仍然在后台运行。

停止容器

如何查看容器名称和ID

在停止容器之前,需要知道容器的名称或ID。要查看当前运行的容器列表及其详细信息,可以使用以下命令:

docker ps

这个命令会列出所有正在运行的容器,包括容器ID、创建时间、使用的镜像和容器名称等信息。如果想查看包括停止的容器在内的所有容器,可以添加-a参数:

docker ps -a

知道了容器的名称或ID后,就可以使用docker stop命令来停止容器了。

停止运行中的Java容器,可以使用docker stop命令,后跟容器名称或ID。例如:

docker stop my-java-app

内外端口

容器的内外端口映射关系是通过docker run命令的-p--publish参数来定义的。这允许外部请求通过宿主机的端口访问容器内部的服务。格式为<宿主机端口>:<容器内部端口>,例如-p 8080:8080表示将容器内的8080端口映射到宿主机的8080端口。

参考链接

在这里插入图片描述

  • 28
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑风风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值