Я настроил использование докера на Centos 6.5. Довольно часто контейнеры продолжают терять интернет. В таких случаях мне нужно перезапустить Docker на хосте. Недавно я попытался запустить обновление yum из контейнера, но это не удалось. Ниже приведен журнал из / var / log / docker.

2014/07/15 10:33:36 GET /v1.12/containers/update_test/json
[b601ba8c] +job container_inspect(update_test)
[b601ba8c] -job container_inspect(update_test) = OK (0)
2014/07/15 10:33:36 POST /v1.12/containers/update_test/attach?stderr=1&stdin=1&stdout=1&stream=1
[b601ba8c] +job container_inspect(update_test)
2014/07/15 10:33:36 POST /v1.12/containers/update_test/start
[b601ba8c] +job start(update_test)
[b601ba8c] -job container_inspect(update_test) = OK (0)
[b601ba8c] +job attach(update_test)
[b601ba8c] +job allocate_interface(5a5c0247441ef5872b531ba720ba1f7d8af2df1cbd47b4a98b84a7b995384d8b)
[b601ba8c] -job allocate_interface(5a5c0247441ef5872b531ba720ba1f7d8af2df1cbd47b4a98b84a7b995384d8b) = OK (0)
[b601ba8c] -job start(update_test) = OK (0)
2014/07/15 10:33:36 POST /v1.12/containers/update_test/resize?h=37&w=165
[b601ba8c] +job resize(update_test, 37, 165)
[b601ba8c] -job resize(update_test, 37, 165) = OK (0)
[b601ba8c] +job release_interface(5a5c0247441ef5872b531ba720ba1f7d8af2df1cbd47b4a98b84a7b995384d8b)
[b601ba8c] -job release_interface(5a5c0247441ef5872b531ba720ba1f7d8af2df1cbd47b4a98b84a7b995384d8b) = OK (0)
[error] container.go:492 5a5c0247441ef5872b531ba720ba1f7d8af2df1cbd47b4a98b84a7b995384d8b: Error closing terminal: invalid argument
[b601ba8c] -job attach(update_test) = OK (0)

Как упоминалось выше, перезапуск Docker на хосте решает проблему. Я не хочу перезапускать докер, так как я планирую запускать производственное приложение через докер. У кого-нибудь есть идеи по этому поводу?

Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация по этому поводу.

6
Maduraiveeran 15 Июл 2014 в 13:49

3 ответа

Лучший ответ

Плохо, что я не упомянул, что хост размещался в Rackspace. Приношу свои извинения за то, что не прояснил это (в то время я думал, что это не имеет значения). Это была автоматизированная процедура Rackspace, которая постоянно портила iptables, что, очевидно, влияло на маршрутизацию докеров. Rackspace действительно предлагал создать файл блокировки где-нибудь в каталоге / etc, чтобы их автоматическая процедура не касалась iptables, о которых я сейчас забыл; Никому не должно быть сложно получить это от них, если они столкнутся с проблемой.

1
Maduraiveeran 4 Авг 2015 в 12:21

Если вы не установите DNS на хосте /etc/resolv.conf, вы можете столкнуться с некоторыми проблемами в Интернете; Если у вас все еще есть эта проблема, рассмотрите возможность использования --dns 209.244.0.3 в настройках docker run; решение может выглядеть так:

docker run -d --dns 209.244.0.3 centos webapp.sh

Еще один полезный параметр, который вам может потребоваться в какой-то момент в этом вопросе, - это --add-host, который добавляет хост в файл /etc/hosts контейнеров.

0
Carlos Morales 28 Янв 2015 в 22:43

Как предложил Maduraiveeran , чтобы Rackspace не перезаписывал пользовательские правила iptables Docker, вам необходимо создать файл блокировки в /etc. Файл должен называться rackconnect-allow-custom-iptables:

touch /etc/rackconnect-allow-custom-iptables

После создания файла блокировки перезапустите демон Docker с помощью: sudo systemctl restart docker

https://support.rackspace.com/how-to/how-to-prevent-rackconnect-from-overwriting-custom-iptables-rules-on-linux-cloud-servers/

1
Charlie Lee 2 Июл 2020 в 10:54