我已經配置了Web服務器以便在Docker容器中運行。這一次,一個不起作用。我的Docker主機正在運行Ubuntu。當其中包含Web服務器應用程序的Docker容器正在運行時,nmap命令會顯示外部IP地址和端口被「過濾」。當Docker容器未運行時,nmap將狀態顯示爲「已關閉」。這完全不是我所期望的。如何讓Web服務器從Docker容器正常工作?
無論Docker容器是否正在運行,Web瀏覽器都會顯示「連接已重置」。考慮到我所看到的nmap結果,這並不令人驚訝。
在支持Web服務的Docker容器中我通常可以運行apt-get update和其他apt-get install命令。但我不能用這個問題容器。我得到「無法解決'deb.debian.org'。」我不確定這是否相關。我嘗試用8.8.8.8和8.8.4.4配置文件/etc/docker/daemon.json。這個文件似乎沒有做任何事情。我嘗試重新啓動Docker服務器。
我在Docker服務器上禁用了IP版本6。我可以禁用防火牆。爲什麼將Docker容器配置爲使用端口會導致nmap命令顯示端口在Docker容器運行時被過濾?
我正在使用AWS服務器。 resolv.conf中未被註釋掉的內容是:
nameserver 172.31.0.2
search us-east-2.compute.internal
更新/編輯。爲了迴應以前的評論,我想在這裏發佈格式更好的信息。
捲曲ipinfo.io顯示了這個(但我替換XXXX的IP地址)
{
"ip": "x.x.x.x",
"hostname": "ec2-x-x-x-x.us-east-2.compute.amazonaws.com",
"city": "Columbus",
"region": "Ohio",
"country": "US",
"loc": "39.9653,-83.0235",
"org": "AS16509 Amazon.com, Inc.",
"postal": "43215"
}
須藤的iptables -S顯示了這個(但我換成XX的IP地址的最後兩個字節)
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION
-A FORWARD -j DOCKER-ISOLATION
-A FORWARD -o br-5d57542faf97 -j DOCKER
-A FORWARD -o br-5d57542faf97 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i br-5d57542faf97 ! -o br-5d57542faf97 -j ACCEPT
-A FORWARD -i br-5d57542faf97 -o br-5d57542faf97 -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.31.x.x/32 ! -i br-5d57542faf97 -o br-5d57542faf97 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER-ISOLATION -i docker0 -o br-5d57542faf97 -j DROP
-A DOCKER-ISOLATION -i br-5d57542faf97 -o docker0 -j DROP
-A DOCKER-ISOLATION -j RETURN
更新/澄清: 我用這樣的命令來創建多克爾容器:
sudo的碼頭工人運行--name碼頭工人,nginx的-p 7777:80 - -network = isolated_nw --ip 172.31.x.x nginx
我創建了一個名爲isolated_nw的用戶定義網絡。當我在RedHat服務器上執行此操作時,我沒有任何問題。當Docker主機運行Ubuntu時,那是我遇到問題時。我應該將這個問題轉到Ubuntu論壇上嗎?
另一個更新:這主要是一個網絡問題(因爲Web服務不工作)。 nmap命令的結果顯示,當Docker容器運行時應該過濾該端口,該端口應該在該端口上偵聽。在RedHat Docker主機上,apt-get命令無法從公共存儲庫包中檢索,如普通的Docker容器。這個命令journalctl -u docker.service
沒有告訴我任何明顯的問題,我的網絡問題。
我參加了獲取.deb包以複製到Docker容器以安裝netstat的工作。然後我跑這個命令:
netstat -plnat
我看到這一點:
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro
tcp 0 0 127.0.0.11:44720 0.0.0.0:* LISTEN -
您是否擁有企業DNS? 'cat/etc/resolv.conf' –
不,它不是公司的DNS。但它是一個AWS實例。我通過編輯主文章完全回答了這個問題。請參閱主文章的最後兩行以獲得答案。 – Victor
你能檢查ufw是否啓用?如果是這樣,請嘗試禁用它。你也可以嘗試使用'--net = host'運行容器。 –