Docker 通常無法清理其 iptables 規則嗎?
我在 Alpine Linux 3.13.2、iptables-1.8.6-r0 和 docker-20.10.3-r0 上。
我正在使用他們的範例 docker-compose .yml 文件試用 Graylog 4。我讓 Graylog 按預期執行,然後執行
docker-compose ... down
,所以我可以開始自定義配置。這就是問題開始的時候。但是,即使我沒有更改配置, nextdocker-compose ... up -d
也會導致 Web UI 的連接超時。我最終的解決方法是在每次反彈容器時更改所有埠轉發(例如,9000:9000 變為 9001:9000,然後是 9002:9000,等等)。最終,經過大量研究,我發現 Docker 在DOCKER鏈上的nat表中設置的舊埠轉發規則在. (僅供參考:與先前實例有關的所有規則都保留。)所以我所做的是使用iptables-save,編輯保存的文件以刪除舊規則,然後使用iptables-restore應用我的編輯。之後,我可以再次連接到 Graylog UI,而無需更改埠或反彈容器。
docker-compose ... down
**所以問題的核心是:**這是預期的 Docker 行為還是錯誤?僅供參考:我在“/var/log/docker.log”中看到的最多記錄是我的 Linux 實例沒有“ip6tables”的警告。
我目前希望我的新解決方法是看看我如何告訴 Docker 為我的容器靜態分配內部 IP 地址。
相切
希望這也能“解決”我在重新啟動時遇到的另一個問題,其中 docker 遇到了其中一個問題
iptables failed: … 另一個應用程序目前持有 xtables 鎖。也許您想使用 -w 選項?\n(退出狀態 4))
錯誤並且無法啟動我的 graylog 容器。因為也許它留下的所有規則都以某種方式觸發了競爭條件?
現在的解決方案;
/etc/docker/daemon.json
{ "ipv6" : false }