初学Docker,记录一些基本概念和使用方式

Sylphia 发布于 21 天前 184 次阅读


一、为什么使用 Docker 部署应用程序?

传统部署方式通常比较复杂,部署应用程序时需要手动配置运行环境,例如:

  • 安装对应版本的 JDK
  • 配置环境变量
  • 安装 Maven 等构建工具
  • 处理不同服务器之间的环境差异

如果使用 Docker,可以实现“构建一次镜像,到处运行”,将应用程序运行环境一起打包,避免繁琐的手工配置,提高部署效率和环境一致性。

二、Docker 基本概念

1. Docker 镜像(Image)

Docker 镜像是应用程序的静态文件,类似于应用程序的安装包。

通常通过 Dockerfile 文件构建生成,例如:

docker build -t spring-application .

2. Docker 容器(Container)

Docker 容器是镜像运行后的实例,是应用程序真正运行的地方。

可以简单理解为:

  • 镜像:相当于食谱,描述了如何制作菜肴。
  • 容器:相当于根据食谱制作出来的菜肴,是实际运行的实例。

3. Docker 仓库(Registries

Docker 仓库是存储 Docker 镜像的地方,如 Docker Hub,你可以从Docker Hub下载别人制作好的镜像供自己使用,也可以上传自己制作的镜像到Docker Hub供他人下载使用。

如果想要私有化Docker仓库,可以使用Harbor来实现私有化部署,部署后可以存储和使用自己内部制作的Docker镜像。

三、Docker 常用基础命令

1. 构建 Docker 镜像

在存放 Dockerfile 的目录下,执行以下命令构建 Docker 镜像:

docker build -t spring-application .

2. 查看 Docker 镜像信息

docker images

3. 运行 Docker 容器

docker run -d -p 8080:8080 spring-application

4. 查看运行中的容器信息

docker ps

5. 停止 Docker 容器

docker stop [container id]

6. 查看未运行的 Docker 容器

docker ps -a

7. 删除 Docker 容器

docker rm [container id]

8. 清除 Docker 构建缓存

docker builder prune

四、Dockerfile 文件解析

下面以一个 Spring Boot 项目为例,介绍 Dockerfile 文件中的常用配置。

1. 指定基础镜像

# 第一阶段负责使用一个带有 Maven 3.9 和 JDK 21 的 Linux 环境来编译 jar 包
FROM maven:3.9-eclipse-temurin-21 AS builder

这里使用 Maven + JDK 21 的基础镜像作为构建环境,并命名当前阶段为 builder

2. 设置工作目录

# 将 Docker 容器内的工作目录设置为 /build,并切换到 build 目录
# 类似 Linux 中执行 cd /build
WORKDIR /build

3. 复制项目源码

# 复制项目源码和资源文件
# 从宿主机当前目录复制到 Docker 容器内的 /build 目录
# 如果存在 .dockerignore 文件,会排除其中指定的内容
COPY . .

4. 使用 Maven 编译项目

# 使用 Java 21 编译所有依赖模块,并生成 admin/target/admin.jar
RUN mvn -B -ntp -pl admin -am clean package -DskipTests

该命令会执行 Maven 构建流程:

  • clean:清理之前的构建文件
  • package:执行项目编译并生成 jar 包
  • -pl admin:指定构建 admin 模块
  • -am:同时构建 admin 依赖的其他模块
  • -DskipTests:跳过测试,提高构建速度
此作者没有提供个人介绍。
最后更新于 2026-08-23