Saltar al contenido

Obtención de la dirección IP de un contenedor Docker

Solución:

Existen algunas posibilidades para comprobar si su aplicación se está ejecutando.

API remota

Como JimiDini dicho, una posibilidad es la API remota de Docker. Puede usarlo para ver todos los contenedores en ejecución (cuál sería su caso de uso, ¿verdad?), Inspeccionar un contenedor determinado o iniciar y detener contenedores. La API es una REST-API con varios enlaces para lenguajes de programación (en https://docs.docker.io/reference/api/remote_api_client_libraries/). Algunos de ellos están muy desactualizados. Para usar la API remota de Docker desde otra máquina, necesitaba abrirla explícitamente:

docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d &

¡Tenga en cuenta que la API está abierta al mundo ahora! En un escenario real, necesitaría protegerlo de alguna manera (por ejemplo, vea el ejemplo en http://java.dzone.com/articles/securing-docker%E2%80%99s-remote-api).

Docker PS

Para ver todos los contenedores en ejecución ejecutar docker ps en su anfitrión. Esto mostrará una lista de todos los contenedores en ejecución. Si no ve su aplicación, no se está ejecutando. También le muestra los puertos que está exponiendo su aplicación. También puede hacer esto a través de la API remota.

Registros

También puede consultar los registros. Tu puedes correr docker attach <container id> para adjuntar a un contenedor determinado y ver su stdout. Puedes correr también correr docker logs <container id> para recibir los registros de Docker. Lo que prefiero es escribir los registros en un directorio determinado, por ejemplo, todos los registros en /var/log y monte esta carpeta en mi máquina host. Entonces todos tus registros terminarán en /home/ubuntu/docker-logs en su anfitrión.

docker run -p 80:8080 -v /home/ubuntu/docker-logs:/var/log:rw my/application

Una palabra para puertos e IP

Cada contenedor obtendrá su propia dirección IP. Puede verificar esta dirección IP a través de la API remota o directamente a través de Docker en la máquina host. También puede especificar un determinado nombre de host para el contenedor (pasando el --hostname="test42" al run mando). Sin embargo, la mayoría de las veces no lo necesitaba.

Para acceder a la aplicación en el contenedor, debe abrir el puerto en el contenedor y vincularse a un puerto en el host.

En su Dockerfile necesita EXPOSE el puerto en el que se ejecuta su aplicación:

FROM ubuntu
...
EXPOSE 8080
CMD run-my-app.sh

Cuando inicie su contenedor, debe vincular este puerto a un puerto del host:

docker run -p 80:8080 my/application

Ahora puede acceder a su aplicación en http://localhost:80 o http://127.0.0.1:80.

Si su aplicación no responde, verifique si el contenedor se está ejecutando escribiendo docker ps o la API remota. Si no se está ejecutando, compruebe los registros para averiguar el motivo.

(Nota: si ejecuta su máquina virtual de Ubuntu en algo como VirtualBox e intenta acceder a ella desde su máquina Windows, ¡asegúrese de abrir los puertos en VirtualBox también!).

El contenedor Docker tiene una dirección IP separada. Por defecto es privado (accesible solo desde la máquina host).

Docker proporciona todos los metadatos (incluida la dirección IP) a través de su API:

  1. https://docs.docker.io/reference/api/docker_remote_api_v1.10/#inspect-a-container
  2. https://docs.docker.io/reference/api/docker_remote_api_v1.10/#monitor-docker-s-events

También puede echar un vistazo a una pequeña herramienta llamada docker-gen para inspirarse. Supervisa los eventos de la ventana acoplable y crea archivos de configuración en la máquina host utilizando plantillas.

Para obtener la dirección IP de un contenedor docker, si conoce su id (una cadena hexadecimal larga) o si lo nombró:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container-id-or-name>
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *