Docker-SpringBoot容器制作教程
·
@[TOC
1. 铺垫
本篇文章着重讲解Docker容器制作的过程,因此这里使用的SpringBoot程序非常简单(直接回显字符串)
1. 1 创建一个SpringBoot项目

1.2 编写一个及其简洁的后端接口
package com.hyy.docker_demo;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Controller {
@RequestMapping("docker_demo")
public String hello() {
return "hello docker";
}
}
1.3 验证是否可运行
启动SpringBoot程序,访问地址:
发现可以正常回显数据,继续下一步
1.4 程序打包
第一步:清理缓存
点击clean:
第二步:点击package打包

第三步:查看是否打包成功
若package后提示build success:
且target目录下出现jar包:
说明打包成功!
1.4 jar包上传到服务器
我们可以用scp命令,把本地电脑上的文件传输到服务器上,语法格式:
scp 本地路径(可以是文件夹/文件) 服务器用户名@IP:服务器目标地址
演示:
最后,查看服务器上是否上传成功:
2. 制作容器
2.1 下载Ubuntu镜像
docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
a3629ac5b9f4: Pull complete
Digest: sha256:cd1dba651b3080c3686ecf4e3c4220f026b521fb76978881737d24f200828b2b
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
2.2 查看镜像
docker images '*ubuntu*'
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 493218ed0f40 4 weeks ago 78.1MB
ubuntu <none> 802541663949 5 months ago 78.1MB
小提示:
< none>是悬空的意思,说明之前我有一个版本的ubuntu镜像,现在重新pull了一个更新的版本,原来的TAG就失效了
2.3 用镜像运行一个容器
运行一个ubuntu容器:
root@iZ2ze8ve39i30yl0dhbqneZ:~/docker_stu# docker run --name docker_spring_boot \
> -p 8080:8080 \
> -it \
> ubuntu:latest /bin/bash
root@f0603125971c:/#
2.4 配置国内镜像源加速
目的是加速后续下载JDK的速度
root@f0603125971c:/# sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.ustc.edu.cn@g' /etc/apt/sources.list
2.5 安装运行java程序的JDK
apt update #更新资源
apt install -y openjdk-8-jdk #-y是默认确认提示
2.6 把宿主机保存的jar包拷贝到容器
新开一个shell界面,通过docker cp拷贝数据:
ls -lh
total 21M
drwxr-xr-x 2 root root 4.0K Feb 11 16:31 docker_cp_test
-rw-r--r-- 1 root root 21M Feb 12 13:36 docker_demo-0.0.1-SNAPSHOT.jar
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0603125971c ubuntu:latest "/bin/bash" 13 minutes ago Up 13 minutes 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp docker_spring_boot
3e41e3f7d876 nginx:latest "/docker-entrypoint.…" 21 hours ago Up 21 hours 0.0.0.0:80->80/tcp, [::]:80->80/tcp nginx_cp_demo
docker cp ./docker_demo-0.0.1-SNAPSHOT.jar docker_spring_boot:/app.jar
Successfully copied 21MB to docker_spring_boot:/app.jar
2.7 进入容器,启动jar程序
docker exec -it docker_spring_boot /bin/bash
root@f0603125971c:/# ls -lh | grep app
-rw-r--r-- 1 root root 21M Feb 12 13:36 app.jar
update-alternatives --config java # 如果有多个jdk版本,需要配置和jar包一致的jdk版本
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 auto mode
1 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
Press <enter> to keep the current choice[*], or type selection number: 0
java -jar app.jar # 运行springboot程序
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.5.5)
2026-02-12T14:09:12.610+08:00 INFO 5709 --- [docker_demo] [ main] c.hyy.docker_demo.DockerDemoApplication : Starting DockerDemoApplication v0.0.1-SNAPSHOT using Java 17.0.18 with PID 5709 (/app.jar started by root in /)
2026-02-12T14:09:12.620+08:00 INFO 5709 --- [docker_demo] [ main] c.hyy.docker_demo.DockerDemoApplication : No active profile set, falling back to 1 default profile: "default"
2026-02-12T14:09:14.648+08:00 INFO 5709 --- [docker_demo] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2026-02-12T14:09:14.675+08:00 INFO 5709 --- [docker_demo] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2026-02-12T14:09:14.676+08:00 INFO 5709 --- [docker_demo] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.44]
2026-02-12T14:09:14.746+08:00 INFO 5709 --- [docker_demo] [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2026-02-12T14:09:14.749+08:00 INFO 5709 --- [docker_demo] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1952 ms
2026-02-12T14:09:15.531+08:00 INFO 5709 --- [docker_demo] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'
2026-02-12T14:09:15.563+08:00 INFO 5709 --- [docker_demo] [ main] c.hyy.docker_demo.DockerDemoApplication : Started DockerDemoApplication in 4.006 seconds (process running for 5.053)
2.8 查看运行结果

小提示:
注意开放服务器防火墙指定的端口号,否则访问会失败
3. 关闭容器&释放资源
exit # ctrl+c退出spring程序后,exit退出容器
docker ps #查看当前正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0603125971c ubuntu:latest "/bin/bash" 27 minutes ago Up 27 minutes 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp docker_spring_boot
3e41e3f7d876 nginx:latest "/docker-entrypoint.…" 21 hours ago Up 21 hours 0.0.0.0:80->80/tcp, [::]:80->80/tcp nginx_cp_demo
docker stop docker_spring_boot #停止容器
docker_spring_boot
docker rm docker_spring_boot # 删除容器
docker_spring_boot
docker ps -a | grep docker_spring_boot #查看容器是否删除
更多推荐




所有评论(0)