apache - network - que es docker compose
Docker: indica que la conexión se rechazó al intentar conectarse a un puerto publicado (3)
A pesar de que creó los contenedores en su máquina local. En realidad, se están ejecutando en una máquina diferente (una máquina virtual)
Primero, compruebe cuál es la IP de su docker machine (la máquina virtual)
$docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM
default * virtualbox Running tcp://192.168.99.100
A continuación, ejecute el comando curl
para ver el sitio web predeterminado en su servidor web Apache dentro del contenedor
curl http://192.168.99.100:9191
Soy un novato en Docker. Estoy creando un ejemplo Hello, World. Todo lo que intento hacer es mostrar Apache en una ventana acoplable y luego ver el sitio web predeterminado desde la máquina host.
Dockerfile
FROM centos:latest
RUN yum install epel-release -y
RUN yum install wget -y
RUN yum install httpd -y
EXPOSE 80
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]
Y luego lo construyo: > docker build .
Y luego lo etiqueto:
docker tag 17283f566320 my:apache
Y luego lo ejecuto:
> docker run -p 80:9191 my:apache
AH00558: httpd: Could not reliably determine the server''s fully qualified domain name, using 172.17.0.2. Set the ''ServerName'' directive globally to suppress this message
Entonces corre ...
En otra ventana de terminal, intento emitir el comando curl
para ver el sitio web predeterminado.
> curl -XGET http://0.0.0.0:9191
curl: (7) Failed to connect to 0.0.0.0 port 9191: Connection refused
> curl -XGET http://localhost:9191
curl: (7) Failed to connect to localhost port 9191: Connection refused
> curl -XGET http://127.0.0.1:9191
curl: (7) Failed to connect to 127.0.0.1 port 9191: Connection refused
o intento localhost
Solo para asegurarme de que tengo el puerto correcto, ejecuto esto:
> docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5aed4063b1f6 my:apachep "/usr/sbin/httpd -D F" 43 seconds ago Up 42 seconds 80/tcp, 0.0.0.0:80->9191/tcp angry_hodgkin
Gracias a todos. Mis puertos fueron revertidos:
> docker run -p 9191:80 my:apache
Si está ejecutando la ventana acoplable en la máquina Ubuntu como nativa, debería poder acceder a su contenedor con localhost. Si está utilizando Mac o Windows, su contenedor acoplador no se ejecuta en el host local sino en su IP. puede obtener su contenedor ip con el comando docker inspect <container id> | grep IPAddress
docker inspect <container id> | grep IPAddress
o si está utilizando docker-machine docker-machine ip <docker_machine_name>
Información relacionada:
- http://networkstatic.net/10-examples-of-how-to-get-docker-container-ip-address/
- https://docs.docker.com/machine/reference/ip/
- ¿Cómo obtener la dirección IP de un contenedor Docker del host?
por lo que su curl debe ser algo así como este curl <container_ip>:<container_exposed_port>
también puede etiquetar su imagen en el comando de compilación con param -t
como este: docker build -t my:image .
Otro consejo es que puedes optimizar tu archivo docker combinando los comandos de instalación de yum como este:
RUN yum install -y /
epel-release /
wget /
httpd
http://blog.tutum.co/2014/10/22/how-to-optimize-your-dockerfile/