Спочатку мій контейнер докера зміг дістатися до зовнішнього Інтернету (Це докер-послуга / контейнер, що працює на Amazon EC2).
Оскільки мій додаток є API, я продовжив створення мого контейнера (він зміг витягнути всі необхідні йому пакунки), оновивши свої IP-таблиці для маршрутизації всього трафіку з порту 80 на порт, на який мій API (працює на докері). слухати далі.
Потім, пізніше, коли я спробував відновити контейнер, він не вдався. Після довгої боротьби я виявив, що мій попередній крок (встановлення правила переадресації портів IPTable) зіпсував зовнішню мережу можливості докера.
Рішення: Зупиніть свою послугу IPTable:
sudo service iptables stop
Перезапустіть демон Docker:
sudo service docker restart
Потім спробуйте відновити контейнер. Сподіваюся, це допомагає.
Слідувати
Я повністю не помітив, що мені не потрібно возитися з IP-таблицями, щоб пересилати вхідний трафік до 80 до порту, на якому працює API, що працює на docker. Натомість я просто псевдонімував порт 80 на порт, на якому працює API в докері:
docker run -d -p 80:<api_port> <image>:<tag> <command to start api>
sysctl -w net.ipv4.ip_forward=1
вирішило мою проблему: довелося бігти (на Centos 6)