/usr/bin/docker: Risposta di errore dal demone: il driver non è riuscito a programmare la connettività esterna sull'endpoint app

Ciao a tutti, sono bloccato su questo problema da oltre una settimana. Ho letto tutti gli argomenti pertinenti su Meta e ho provato tutte le soluzioni qui e altrove, ma nulla funziona. Sono proprio a un vicolo cieco.

Ogni volta che provo a eseguire ./launcher rebuild app, il processo arriva fino alla fine e poi…

Rimozione del vecchio container
+ /usr/bin/docker rm app
app

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_HOSTNAME=bitkcor.com -e DISCOURSE_DEVELOPER_EMAILS=admin@bitkcor.com -e DISCOURSE_SMTP_ADDRESS=smtp.mailgun.org -e DISCOURSE_SMTP_PORT=2525 -e DISCOURSE_SMTP_USER_NAME=postmaster@bitkcor.com -e DISCOURSE_SMTP_PASSWORD=af3ce4432f9613e0b36545e5c1b941c6-c1fe131e-22e64a1e -e LETSENCRYPT_ACCOUNT_EMAIL=admin@bitkcor.com -h bitkcor-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:d6:ee:ff:fa:8d local_discourse/app /sbin/boot
2bef25314e87e6c0679ced8f3c04dd8a98808350baba7a4ff94a3e4c55dc5c20
/usr/bin/docker: Errore di risposta dal demone: il driver non è riuscito a programmare la connettività esterna sull'endpoint app (095c02cba7ddee18c64f04ccd1043408aa8ffed8a3c560b8eeeea133c7abe6c6): Errore durante l'avvio del proxy userland: listen tcp 0.0.0.0:80: bind: indirizzo già in uso.

Pensavo che la soluzione dovesse essere semplice, ma non riesco a trovarla.

Qualcuno conosce la risposta?

Qualcosa sta occupando la porta 80, il che significa che è in esecuzione un server web di qualche tipo.

Grazie Jeff, ho letto il tuo commento su un thread a riguardo del 2015, pubblicato prima oggi. C’è un comando da terminale per tracciare chi lo sta utilizzando?

Ho provato sudo lsof -i :80 e ho ottenuto.

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   3336     root    6u  IPv4  21408      0t0  TCP *:http (LISTEN)
nginx   3336     root    7u  IPv6  21409      0t0  TCP *:http (LISTEN)
nginx   3338 www-data    6u  IPv4  21408      0t0  TCP *:http (LISTEN)
nginx   3338 www-data    7u  IPv6  21409      0t0  TCP *:http (LISTEN)
nginx   3339 www-data    6u  IPv4  21408      0t0  TCP *:http (LISTEN)
nginx   3339 www-data    7u  IPv6  21409      0t0  TCP *:http (LISTEN)

Okay, stavo sbagliando. Ho chiuso root e ho riprovato con sudo lsof -i :80. Sto ancora cercando di capire di cosa si tratta, ma è un progresso.

COMMAND   PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Google    671 triberocket   30u  IPv4 0x1e729b312ca69e05      0t0  TCP 10.0.0.237:56713->server-13-249-71-64.dfw53.r.cloudfront.net:http (ESTABLISHED)
Google    671 triberocket   58u  IPv4 0x1e729b311af72ba5      0t0  TCP 10.0.0.237:56714->server-13-249-71-64.dfw53.r.cloudfront.net:http (ESTABLISHED)

Ora sono completamente confuso. Ho usato Activity Monitor e ho ordinato per Porta. Un’app Google Drive File Stream che ho appena scaricato era progettata per utilizzare la porta 80. L’app era strana, quindi l’ho eliminata completamente e svuotata dal cestino. Non appena ho spento l’app di Google, è apparso qualcosa chiamato ContactAccountsServices in Activity Monitor. L’ho spento e ho eseguito un riavvio completo del computer.

Il computer si è riavviato. Ho scoperto che Google sopra corrisponde a due schede in Chrome. Ho chiuso Chrome ed eseguito ./launcher rebuild app. Dopo il riavvio, ho fatto ssh root@... e ho eseguito system reboot sul server Ubuntu. Sembra che abbia fatto qualcosa, ma non bisogna mai farsi prendere dall’eccitazione. Quindi sono tornato indietro e, per farla breve:

2020-04-10 22:38:39.934 UTC [49] LOG: aborting any active transactions

2020-04-10 22:38:39.937 UTC [49] LOG: worker process: logical replication launcher (PID 58) exited with exit code 1

2020-04-10 22:38:39.939 UTC [53] LOG: shutting down

166:M 10 Apr 2020 22:38:39.942 # User requested shutdown...

166:M 10 Apr 2020 22:38:39.942 * Saving the final RDB snapshot before exiting.

2020-04-10 22:38:39.964 UTC [49] LOG: database system is shut down

166:M 10 Apr 2020 22:38:39.978 * DB saved on disk

166:M 10 Apr 2020 22:38:39.978 # Redis is now ready to exit, bye bye...

sha256:ab0f0c30c7e98b280832fc0355cd0a3eada6063b268b8ae1371e9d315b0ca43e

293cf39b9377bfd9dda6a0e3b9d43bde3e6dcc8341d34d9da21a155f18afb45c

Removing old container

+ /usr/bin/docker rm app

app

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_HOSTNAME=bitkcor.com -e DISCOURSE_DEVELOPER_EMAILS=admin@bitkcor.com -e DISCOURSE_SMTP_ADDRESS=smtp.mailgun.org -e DISCOURSE_SMTP_PORT=2525 -e DISCOURSE_SMTP_USER_NAME=postmaster@bitkcor.com -e DISCOURSE_SMTP_PASSWORD=af3ce4432f9613e0b36545e5c1b941c6-c1fe131e-22e64a1e -e LETSENCRYPT_ACCOUNT_EMAIL=admin@bitkcor.com -h bitkcor-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:d6:ee:ff:fa:8d local_discourse/app /sbin/boot

b2076d8166130c73c7d988e7e51ac100b9a12ce75f020328d0f47eebdad5e9a3

/usr/bin/docker: Error response from daemon: driver failed programming external connectivity on endpoint app (ba1f594a24e17f29cdaeb0cfe3f2a79af2bb7d22a28c4902c97d37e8f5036347): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.

Quindi, sì. Sono pronto a indossare gonne d’erba e ossa di pollo per risolvere questo problema. È una specie di magia voodoo che deve essere qualcosa di semplice che sto guardando proprio sotto il mio naso, ma che non ho ancora provato. Cosa sia, non so dirtelo. Puoi dirmelo tu? Per favore? La mia sanità mentale è in bilico. Sono meglio di così. lol

Prova sudo systemctl stop nginx.

Rimosso la pagina di benvenuto di nginx, ma ora nulla viene caricato — https://bitkcor.com/

Ancora a fissare una pagina bianca. Devo riavviare qualcosa ora? Hai qualche suggerimento?

In realtà. Basta reimpostare SSL su strict in Cloudflare e tutto è tornato.

sudo systemctl stop nginx è stata la soluzione.

Grazie @riking!