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

解决 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)

猜你喜欢

转载自blog.csdn.net/zengNLP/article/details/127220244