/usr/bin/docker: Ошибка ответа от демона: драйвер не смог настроить внешнюю связность на конечной точке app

Привет, ребята, застрял на этом уже больше недели. Я прочитал все соответствующие темы на meta, попробовал все решения здесь и в других местах, но ничего не работает. Я просто в тупике.

Каждый раз, когда я пытаюсь запустить ./launcher rebuild app, процесс доходит до самого конца, а затем…

Удаление старого контейнера
+ /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: Ошибка ответа от демона: сбой драйвера при программировании внешнего подключения для конечной точки app (095c02cba7ddee18c64f04ccd1043408aa8ffed8a3c560b8eeeea133c7abe6c6): Ошибка при запуске пользовательского прокси: listen tcp 0.0.0.0:80: bind: адрес уже используется.

Думаю, решение должно быть простым, но не могу его найти.

Кто-нибудь знает ответ?

Что-то блокирует порт 80, что означает наличие какого-либо веб-сервера.

Спасибо, Джефф. Сегодня утром я прочитал твой комментарий в ветке об этом от 2015 года. Есть ли терминальная команда, чтобы отследить, что его использует?

Попробовал sudo lsof -i :80 и получил:

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)

Хорошо, я делал это неправильно. Выйдя из root, я снова выполнил sudo lsof -i :80. Всё ещё пытаюсь понять, что это такое, но это уже прогресс.

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)

Теперь я окончательно запутался. Я использовал Activity Monitor и отсортировал процессы по порту. Приложение Google Drive File Stream, которое я только что скачал, было настроено на захват порта 80. Приложение работало нестабильно, поэтому я полностью удалил его и очистил корзину. Как только я завершил работу с приложением Google, в Activity Monitor появилось что-то под названием ContactAccountsServices. Я завершил его работу и выполнил полную перезагрузку компьютера.

После перезагрузки я обнаружил, что то, что я называл Google выше, — это две вкладки в Chrome. Я закрыл Chrome и выполнил ./launcher rebuild app. После перезагрузки я подключился через ssh root@... и выполнил system reboot на сервере Ubuntu. Казалось, что это помогло, но не стоит слишком радоваться раньше времени. Так что я вернулся к началу и, если коротко…

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.

Вот и всё. Я готов надеть травяные юбки и использовать куриные кости для отладки. Это какая-то вуду-магия, которая, должно быть, является чем-то простым, на что я смотрю прямо сейчас, но что-то не пробовал. Что именно это, я не могу сказать. А вы можете? Пожалуйста? Моё рассудок на волоске. Я лучше, чем это. lol

Попробуйте sudo systemctl stop nginx.

Страница приветствия nginx удалена, но теперь ничего не загружается — https://bitkcor.com/

Все еще смотрю на пустую страницу. Нужно ли мне что-то перезапустить сейчас? Есть какие-нибудь предложения?

На самом деле. Просто верните SSL в режим «Strict» в Cloudflare, и всё вернется.

Команда sudo systemctl stop nginx решила проблему.

Спасибо @riking!