Saltar al contenido

¿Cómo asigno un mapeo de puertos a un contenedor Docker existente?

Solución:

También me interesa este problema.

Como mencionó @Thasmo, los reenvíos de puertos se pueden especificar SOLAMENTE con docker run (y docker create) comando.
Otros comandos, docker start no tiene -p opción y docker port solo muestra los reenvíos actuales.

Para agregar reenvíos de puertos, siempre sigo estos pasos,

  1. dejar de correr contenedor

    docker stop test01
    
  2. cometer el contenedor

    docker commit test01 test02
    

    NOTA: Lo anterior, test02 es una nueva imagen que estoy construyendo a partir del test01 envase.

  3. volver a ejecutar desde la imagen comprometida

    docker run -p 8080:8080 -td test02
    

Donde el primer 8080 es el puerto local y el segundo 8080 es el puerto de contenedores.

Puede cambiar la asignación de puertos editando directamente el hostconfig.json archivar en
/var/lib/docker/containers/[hash_of_the_container]/hostconfig.json o /var/snap/docker/common/var-lib-docker/containers/[hash_of_the_container]/hostconfig.json, Creo, si instaló Docker como un complemento.

Puede determinar el [hash_of_the_container] mediante el docker inspect <container_name> comando y el valor del campo “Id” es el hash.

  1. Detenga el contenedor (docker stop <container_name>).
  2. Detener el servicio de Docker (según el comentario de Tacsiazuma)
  3. Cambie el archivo.
  4. Reinicie su motor de Docker (para vaciar / borrar las cachés de configuración).
  5. Inicie el contenedor (docker start <container_name>).

Por lo tanto, no es necesario crear una imagen con este enfoque. También puede cambiar la bandera de reinicio aquí.

PD: puede visitar https://docs.docker.com/engine/admin/ para aprender cómo reiniciar correctamente su motor de Docker según su máquina host. solía sudo systemctl restart docker para reiniciar mi motor de Docker que se ejecuta en Ubuntu 16.04.

Si por “existente” te refieres a “en ejecución”, entonces (actualmente) no es posible agregar una asignación de puertos.

Sin embargo, puede agregar dinámicamente una nueva interfaz de red con, por ejemplo, Pipework, si necesita exponer un servicio en un contenedor en ejecución sin detenerlo / reiniciarlo.

¡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 *