解决 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 错误。
到这里问题基本解决了。