Un utente di CasaOS ha installato diverse applicazioni web che si aspettavano la porta del container 5000. Era possibile raggiungere una sola app perché più container cercavano di pubblicare la stessa porta sull’host Debian. La modifica di entrambi i lati della mappatura ha causato l’interruzione della risposta di alcune applicazioni.
La regola pratica è semplice: mantieni invariata la porta del container dell’applicazione, a meno che la documentazione specifica dell’app non indichi che la porta di ascolto è configurabile. Modifica solo la porta sul lato host.
Leggere le mappature delle porte Docker da sinistra a destra
5001:5000
In questa mappatura, 5001 è la porta dell’host utilizzata nel browser e 5000 è la porta su cui l’applicazione è in ascolto all’interno del container. La guida ufficiale di Docker alla pubblicazione delle porte utilizza lo stesso modello host-container.
Mappare due app sulla porta 5000 su porte host diverse
| Applicazione | Porta host | Porta container | Indirizzo nel browser |
|---|---|---|---|
| MusicBrainz | 5001 | 5000 | http://SERVER-IP:5001 |
| HandBrake | 5002 | 5000 | http://SERVER-IP:5002 |
Ogni coppia di indirizzo IP e porta dell’host deve essere univoca. Più container possono comunque essere in ascolto internamente sulla 5000, perché i relativi namespace di rete sono isolati.
Perché modificare la porta del container spesso causa il malfunzionamento dell’interfaccia web
Un’immagine può avviare il proprio server web su una porta interna fissa. Se CasaOS mappa la porta host 5001 sulla porta container 5001 mentre il processo è ancora in ascolto sulla 5000, Docker inoltra il traffico verso un socket vuoto. Il container può risultare attivo anche se il browser non riceve alcuna risposta.
Modifica la porta del container solo quando l’applicazione a monte espone un’impostazione o una variabile d’ambiente documentata che modifica anche la porta di ascolto del processo.
Modificare il campo corretto in CasaOS
- Apri le impostazioni dell’app o la configurazione per l’installazione personalizzata.
- Individua la voce della porta che mostra i valori dell’host e del container.
- Lascia il valore del container impostato sul valore predefinito dell’immagine.
- Scegli una porta host non utilizzata.
- Salva e ricrea o riavvia il container come richiesto.
- Apri l’app tramite la nuova porta host.
Verificare prima di assegnare una nuova porta
Controlla l’elenco delle app di CasaOS o la configurazione dei container per verificare le mappature esistenti. Considera anche i servizi installati direttamente su Debian, perché possono occupare la stessa porta host senza comparire come app di CasaOS. Evita di assegnare porte comuni dell’infrastruttura, come 22, 53, 80, 443 o 445, a meno che tu non conosca il servizio esistente.
La rete dell’host elimina questa flessibilità
Nella modalità di rete host, il container condivide il namespace di rete dell’host e non può rimappare normalmente una porta di ascolto già utilizzata. La documentazione di Docker sulla rete host conferma che un determinato servizio può associare una specifica porta host a una sola volta.
Domande frequenti sui conflitti di porte in CasaOS
Quale numero devo modificare?
Modifica la porta host, ovvero il primo numero in HOST:CONTAINER.
Ogni app può usare la porta container 5000?
Sì, se ogni container è isolato e ciascuno pubblica una porta host diversa.
Perché l’app è stata installata ma non si apre?
La mappatura potrebbe puntare a una porta del container sulla quale l’applicazione non è in ascolto.
