解决 WARNING: Published ports are discarded when using host network mode 问题

本文解决Docker中使用host网络模式时出现的警告问题。通过调整网络设置和端口映射,成功避免了警告并确保容器正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决 WARNING: Published ports are discarded when using host network mode 问题

问题描述

创建docker容器时,提示如下警告信息:

aaa$ sh start.sh
WARNING: Published ports are discarded when using host network mode

我的创建容器的脚步 start.sh 如下:

docker run -i -t \
--name ai-tomcat \
--network host \
-p 10707:10707 \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v /home/xxx/application/tomcat/logs:/home/tomcat/logs \
--restart=always \
-e JAVA_OPTS="-Xms4096m -Xmx4096m -Dspring.application.nacos-server-addr=10.192.0.100:8848" \
-d ai-tomcat:v1.0.5

重点在于下面两行:

--network host \
-p 10707:10707 \

运行环境

  • Ubuntu 18.04 LTS
  • Docker version 20.10.2, build 2291f61

解决方法

错误分析

  • 1、查看镜像
    输入命令:
docker images -a

输出结果:

REPOSITORY                                              TAG                            IMAGE ID       CREATED         SIZE
ai-tomcat                                               v1.0.5                         d94ef52e7d2c   2 weeks ago     434MB
<none>                                                  <none>                         89e7631debd3   2 weeks ago     434MB
<none>                                                  <none>                         58476b194d65   2 weeks ago     434MB
<none>                                                  <none>                         dd5e60428f55   2 weeks ago     434MB
<none>                                                  <none>                                       ad1150fec7ae   2 weeks ago     434MB
  • 发现问题: 存在与镜像 ai-tomcat:v1.0.5 大小相同且创建时间一样的镜像
  • 问题原因:应该是Dockerfile创建容器时语法问题导致的异常。这里先不管这个。
  • 2、判断端口是否被占用
tcp        0      0 0.0.0.0:31706           0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:31707           0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:6011          0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:10012           0.0.0.0:*               LISTEN      -
tcp6       0      0 :::31711                :::*                    LISTEN      -
tcp6       0      0 :::18080                :::*                    LISTEN      -
tcp6       0      0 :::31713                :::*                    LISTEN      -
tcp6       0      0 :::2049                 :::*                    LISTEN      -
tcp6       0      0 :::10050                :::*                    LISTEN      -
tcp6       0      0 :::54563                :::*                    LISTEN      -
tcp6       0      0 :::31716                :::*                    LISTEN      -
tcp6       0      0 :::31717                :::*                    LISTEN      -
tcp6       0      0 :::9253                 :::*                    LISTEN      -
tcp6       0      0 :::9253                 :::*                    LISTEN      -
tcp6       0      0 :::10707                :::*                    LISTEN      -

发现端口 10707 已经被占用了。

解决问题步骤

  • 1、首先删除已创建的容器

删除容器:

docker stop ai-tomcat
docker rm ai-tomcat
  • 2、修改脚本start.sh
docker run -i -t \
--name ai-tomcat \
--network bridge \
-p 20707:10707 \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v /home/xxx/application/tomcat/logs:/home/tomcat/logs \
--restart=always \
-e JAVA_OPTS="-Xms4096m -Xmx4096m -Dspring.application.nacos-server-addr=10.192.0.100:8848" \
-d ai-tomcat:v1.0.5

重点:
【1】修改 --network host 为 --network bridge
【2】修改端口 10707 为 20707(确保 20707 端口没有被占用)

  • 3、运行脚本 start.sh 重新创建容器
start.sh

创建容器后未提示 WARNING: Published ports are discarded when using host network mode 错误。

到这里问题基本解决了。

参考

  1. https://blog.csdn.net/tilyp/article/details/103371360
  2. 22个Docker常用命令
  3. Dockerfile总结:常用指令、注意事项、常见错误(no such file or directory、Permission denied)
[root@localhost rules]# vim node-up.rules [root@localhost rules]# docker rm -f prometheus prometheus [root@localhost rules]# docker run -d --name prometheus -p 9090:9090 -v /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /prometheus/rules:/usr/local/prometheus/rules --net host prom/prometheus WARNING: Published ports are discarded when using host network mode fb4c4de5d4ab0f8b981d70ed06f299c370716bfd0f301cb78b00757c26dccc68 [root@localhost rules]# vi /prometheus/prometheus.yml [root@localhost rules]# docker rm -f prometheus prometheus [root@localhost rules]# docker run -d --name prometheus -p 9090:9090 -v /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /prometheus/rules:/usr/local/prometheus/rules --net host prom/prometheus WARNING: Published ports are discarded when using host network mode f89a3c1c87dacc072c0e3f276c894b4af6577bff3bb555d045ab101ee9f545f1 [root@localhost rules]# docker restart prometheus prometheus [root@localhost rules]# vim node-up.rules [root@localhost rules]# docker rm -f prometheus prometheus [root@localhost rules]# docker run -d --name prometheus -p 9090:9090 -v /prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /prometheus/rules:/usr/local/prometheus/rules --net host prom/prometheus WARNING: Published ports are discarded when using host network mode b37c19541089a54f2db765f3ae51379c0d384e40f3697022109f365c97c81673 [root@localhost rules]# vi /prometheus/prometheus.yml [root@localhost rules]# docker run --name prometheus -d -p 9090:9090 -v /root/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v /root/prometheus/groups/:/usr/local/prometheus/groups/ -v /root/prometheus/rules/:/usr/local/prometheus/rules/ prom/prometheus docker: Error response from daemon: Conflict. The container name "/prometheus" is already in use by container "b37c19541089a54f2db765f3ae51379c0d384e40f3697022109f365c97c81673". You have to remove (or rename) that container to be able to reuse that name. See 'docker run --help'. 这样配置之后却没有在普罗米修斯的rules看到node-rule
最新发布
06-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

szZack

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

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

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

打赏作者

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

抵扣说明:

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

余额充值