apache – 运行一个接受来自主机的流量的Docker容器

我有以下配置:
Dockerfile

FROM centos  
MAINTAINER Eduar Tua 

run-apache.sh脚本:

#!/bin/bash

rm -rf /run/httpd/* /tmp/httpd*

exec /usr/sbin/apachectl -D FOREGROUND

然后我建立图像:

sudo docker build --rm -t platzi/httpd .  

然后

sudo docker run -d -p 80:80 platzi/httpd

之后,当我尝试运行容器接受80端口中主机的连接时,我得到:

67ed31b50133adc7c745308058af3a6586a34ca9ac53299d721449dfa4996657
FATA[0002] Error response from daemon: Cannot start container     67ed31b50133adc7c745308058af3a6586a34ca9ac53299d721449dfa4996657: Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use

有帮助吗?

错误似乎很清楚:

FATA[0002] Error response from daemon: Cannot start container 67ed31b50133adc7c745308058af3a6586a34ca9ac53299d721449dfa4996657: Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use

它说,“地址已在使用中”.这意味着您系统上的某些东西 – 可能是像Apache这样的Web服务器 – 已经在端口80上侦听.您将需要:

>停止Web服务器,
>在-p参数中选择另一个主机端口到docker run或
>只需删除-p参数即可.

由于Docker无法设置请求的端口转发,因此无法启动容器.

选项(a)和(b)都允许容器绑定到主机上的端口80.仅当您要从主机以外的其他位置访问容器时,才需要执行此操作.

如果您只想从docker主机访问容器但又不希望在本地网络上公开容器,则选项(c)非常有用.在这种情况下,您将使用docker分配的容器IP地址,您可以通过运行docker inspect并仔细阅读输出来获取,或者只运行:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_id

相关文章

最近一直在开发Apworks框架的案例代码,同时也在一起修复Apw...
最近每天都在空闲时间努力编写Apworks框架的案例代码WeText。...
在《Kubernetes中分布式存储Rook-Ceph部署快速演练》文章中,...
最近在项目中有涉及到Kubernetes的分布式存储部分的内容,也...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...
CentOS下Docker与.netcore(一) 之 安装 CentOS下Docker与.ne...