运行 带有 -p 或 -P 标志的 Docker 容器导致它失败

Running a Docker container with the -p or -P flag causes it to fail

我最近开始将我的简单博客应用移至 docker 容器中。我创建了自己的 docker 文件并成功构建了图像,它 运行 的 Web 应用程序没有任何问题,但是如果我将 -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 设置为自动 运行 我的可执行文件,并且我的 Docker 文件中有 EXPOSE 8080。我最初认为这一定是我的 webapp 不喜欢 docker 的端口转发或我的 Docker 文件的问题所以我去了 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 源代码(哦,上帝,请不要)找到这些东西之前,我希望这里的人有更好的答案。我可以根据要求提供任何进一步的信息。

找到答案:

而不是 docker 文件中的端口,如果你这样做会怎样: docker 运行 -p 127.0.0.1:$HOSTPORT:$CONTAINERPORT --name CONTAINER -t someimage – purpletech

感谢紫科技。请注意,我根本没有更改 Docker 文件,只是 运行 命令显示的方式。

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

而不是 docker 文件中的端口,如果你这样做会怎样: docker 运行 -p 127.0.0.1:$HOSTPORT:$CONTAINERPORT --name CONTAINER -t一些图像