在服务器上使用Dockerfile创建springboot项目的镜像和踩坑避雷

1. 准备个文件夹

这是我的路径

复制代码
/usr/local/springboot/docker-daka/docker_files

2. 将jar包上传

springboot项目打包------maven的package

这是整个项目打包的模式,也可以分离依赖、配置和程序进行打包,详情看我这篇文章:
springboot依赖 配置 程序 分离打包成jar包

这里我以不分离的模式演示:

  • 将上面这个jar包上传至步骤1创建的目录下

  • 我这里使用的是宝塔面板进行辅助,点击文件,直接将jar包拖入右侧空白处就能上传

3. 创建Dockerfile文件,并进行配置

这是我的配置,比较简单,更详细的配置请看这篇:
使用Dockerfile构建镜像

4. 构建镜像

复制代码
docker build -t test-daka .

test-daka是镜像名字

命令最后一个是点,切记不要忘记

5. 构建容器

复制代码
docker run -d --name daka -p 11003:11003 test-daka

容器名字是daka

宿主机和容器端口都是11003

使用的镜像是test-daka

在上述操作中,步骤5有个坑。
用ai搜了一下午,没搞定,自己搜了一下,秒找到答案,希望大家适当用ai。

以下是完整的报错:

复制代码
docker: Error response from daemon: driver failed programming external connectivity on endpoint daka (xxxxxxxxxxxxxxxxxxxxxxxxxxx):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 11003 -j DNAT --to-destination xxx.xx.x.x:11003 ! -i docker0: iptables: No chain/target/match by that name.

解决方案

  • ① 检查内核模块

    lsmod | grep br_netfilter

如果输出中没有br_netfilter,需要加载该模块。命令如下:

复制代码
sudo modprobe br_netfilter
  • ② 手动添加iptables规则

    sudo iptables -P FORWARD ACCEPT
    sudo iptables -A FORWARD -i docker0 -j ACCEPT
    sudo iptables -A FORWARD -o docker0 -j ACCEPT

这些规则将允许Docker容器与主机和其他容器进行网络通信。

  • ③ 重启Docker服务

    sudo systemctl restart docker

我是步骤①正常,手动执行了步骤②和③ ,再执行步骤5构建容器的命令,就正常了。

相关推荐
网络小江7 分钟前
组网第27课:ARP 的能与不能——免费 ARP、代理 ARP 与 ARP 欺骗
服务器·网络·网络安全·负载均衡·免费arp
SunnyDays101113 分钟前
Java 操作 PPT 超链接:添加、修改和删除
java·powerpoint·ppt·超链接
云计算练习生15 分钟前
什么是文件权限?Linux 中 rwx 与数字权限的对应关系
linux·运维·服务器·操作系统·文件权限管理
Thomas.Sir20 分钟前
第4课:配置文件详解:application.yml/properties,多环境配置、配置分组、配置校验
java·spring boot
FY@-@26 分钟前
VMware ESXi 7.0 实验全记录:嵌套安装 → 网络配置 → 存储 → Windows 10 虚拟机部署
运维·网络·windows·云计算
饿了吃洗衣凝珠35 分钟前
red hat day2
linux·运维·服务器
白露与泡影40 分钟前
一线 Java 后端面试八股(2026 更新版,含完整答案)
java·开发语言·面试
SL_staff42 分钟前
APS落地失败的5个隐形坑:离散制造排产为何总在Excel里打转?
java·人工智能·开源
上海云盾-高防顾问1 小时前
边缘验签是什么
运维·服务器·网络
Code-zyc1 小时前
读取电表数据并展示
java