我在同一台机器上的docker中运行了多个python应用程序。每个python应用程序使用twisted
创建服务器和客户端以在TCP
中进行通信,每个进程侦听的端口都在静态文件中配置。
有时候,只有一些,当我重新启动一个或多个docker镜像时(我使用docker kill
和docker run
),有一个应用程序在被杀之前使用的端口仍有可能被使用。
在docker run
命令之后,twisted
会抛出Unhandled error in Deferred:
错误(没有更多细节,只有这一行,可能是因为我的日志配置),当且仅当它是一个有问题的一个
然后我使用netstat -ntlp
来检查特定端口,我发现端口没有被监听。我尝试nc -l [PORT]
,然后返回Address already in use
。另外,我使用netstat -a | grep ESTABLISHED
来查找某些进程已经/已经建立了与该端口的TCP连接。
我想知道为什么会出现这种情况以及如何解决这个问题。每次重新启动docker镜像时,我都不想检查netstat -ntlp
。
操作系统:Ubuntu 14.04.5 LTS (GNU/Linux 4.4.0-53-generic x86_64)
泊坞:
Client:
Version: 1.13.1
API version: 1.26
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 06:42:29 2017
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Go version: go1.7.5
Git commit: 092cba3
Built: Wed Feb 8 06:42:29 2017
OS/Arch: linux/amd64
Experimental: false
Python:Python 2.7.6
扭曲:17.1.0
答案 0 :(得分:0)
首先显而易见的是,您是否尝试了以下内容,
docker restart <container name>
如果它不起作用,请尝试遵循,作为最后的手段。
docker kill --signal=SIGKILL <container name>