使用-p或-P标志运行Docker容器会导致它失败

时间:2015-03-20 00:25:42

标签: web-applications docker port

我最近开始将我的简单博客应用程序移动到docker容器中。我创建了自己的dockerfile并成功构建了映像,它运行webapp没有任何问题但是如果我在运行命令中添加-P或-p 8080:8080标志它会失败并显示错误:

mathew@mathew-laptop:goblog:-> docker run -it -P chasinglogic/test
FATA[0002] Error response from daemon: Cannot start container 0042e27ea10942b4b394b7179d8dc43e3996e28c773d400672fd2333833659ad:  (exit status 1)

我有CMD设置为自动运行我的可执行文件,我的Dockerfile中有EXPOSE 8080。我原本认为这一定是我的webapp不喜欢docker的端口转发或我的Dockerfile的问题所以我去了Docker教程并使用training / webapp图像测试并得到了同样的错误:

mathew@mathew-laptop:goblog:-> sudo docker run -d -P training/webapp python app.py
[sudo] password for mathew: 
Unable to find image 'training/webapp:latest' locally
Pulling repository training/webapp
31fa814ba25a: Download complete 
511136ea3c5a: Download complete 
f10ebce2c0e1: Download complete 
82cdea7ab5b5: Download complete 
5dbd9cb5a02f: Download complete 
74fe38d11401: Download complete 
64523f641a05: Download complete 
0e2afc9aad6e: Download complete 
e8fc7643ceb1: Download complete 
733b0e3dbcee: Download complete 
a1feb043c441: Download complete 
e12923494f6a: Download complete 
a15f98c46748: Download complete 
Status: Downloaded newer image for training/webapp:latest
fac4cd8b43b984b14cbcc0567fe3b22801574e8a07069b401328afa9e20f3c97
FATA[0111] Error response from daemon: Cannot start container fac4cd8b43b984b14cbcc0567fe3b22801574e8a07069b401328afa9e20f3c97:  (exit status 1) 

一旦删除-p或-P标志,图像就可以正常运行。我禁用了我的防火墙以消除它作为可能的来源。我找不到任何文件告诉我FATA错误代码是什么意思所以在我决定开始挖掘Docker源代码(OH GOD PLEASE NO)之前找到这些东西我希望有人在这里有更好的答案。我可以根据要求提供任何进一步的信息。

答案发现:

而不是dockerfile中的端口,如果你这样做:docker run -p 127.0.0.1:$HOSTPORT:$CONTAINERPORT --name CONTAINER -t someimage - purpletech

感谢purpletech。作为一个注释我根本没有更改Dockerfile只是按照显示的方式运行命令。

1 个答案:

答案 0 :(得分:1)

很高兴它奏效了。 我怀疑绑定到非本地主机的权限问题,因此建议您显式绑定到localhost。

而不是dockerfile中的端口,如果你这样做:docker run -p 127.0.0.1:$HOSTPORT:$CONTAINERPORT --name CONTAINER -t someimage