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

我最近开始把我的简单的博客应用程序移动到docker集装箱。 我创build了自己的dockerfile并成功构build了映像,并且运行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教程和testing与培训/ Web应用程序的图像,并得到了同样的错误:

 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)来find这个东西,我希望有人在这里有一个更好的答案。 我可以根据要求提供更多信息。

find答案:

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

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

很高兴它的工作。 我怀疑是一个权限问题绑定到非本地主机,所以build议你显式绑定到本地主机。

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