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,
-
dejar de correr contenedor
docker stop test01
-
cometer el contenedor
docker commit test01 test02
NOTA: Lo anterior,
test02
es una nueva imagen que estoy construyendo a partir deltest01
envase. -
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.
- Detenga el contenedor (
docker stop <container_name>
). - Detener el servicio de Docker (según el comentario de Tacsiazuma)
- Cambie el archivo.
- Reinicie su motor de Docker (para vaciar / borrar las cachés de configuración).
- 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.