2017-01-07 101 views
5

我使用泊塢窗爲在Mac OS上運行的Oracle 11g快捷塞拉利昂10.12.2失敗:端口已經被分配

https://github.com/wnameless/docker-oracle-xe-11g

這是我的錯誤:

Last login: Sat Jan 7 22:42:11 on ttys000 
➜ ~ docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g 
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. 
See 'docker run --help'. 
➜ ~ docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g 
043d8caecbb45d6e2e5999b69a2f760c20d53ff3aa2fad78cb1eb70acb058a1f 
docker: Error response from daemon: driver failed programming external connectivity on endpoint serene_lalande (08bb0bd9684c0f92db7b736986bf894d3a57a714324405823496d13e175e7491): Error starting userland proxy: Bind for 0.0.0.0:49161 failed: port is already allocated. 
➜ ~ 

我診斷:

➜ ~ netstat -anp tcp | grep 49161         
tcp4  0  0 192.168.1.2.49161  17.188.166.13.5223  ESTABLISHED 
➜ ~ 

➜ ~ docker --version 
Docker version 1.12.5, build 7392c3b 

我的電腦ID:20EB9506-CC72-4093-8A15-60E05A841ED1

我不知道爲什麼。在那幾周之前,它運行成功。幾乎,我改變了,發佈新的DHCP IP。如何運行Docker實例具有Oracle 11g快速成功?

+2

您確定沒有此容器的另一個實例已經在運行並正在使用此TCP端口嗎?看看'docker ps'並確保它不在那裏,如果是(在開始另一個之前)就停下來。一次只能有一個進程綁定到TCP端口。 –

回答

5

你無法啓動兩次

docker run -d -p 49160:22

,因爲這意味着你要分配主機上的端口49160的兩倍,當然,第二次,你會得到你的錯誤消息,拉昇第二次運行

docker run -d -p 49161:22

0

您將需要使用不同的端口,而不是49161.嘗試端口小於49152

您的計算機上的端口49161與遠程Apple服務器上的端口5223之間存在預先存在的連接。因此,該端口在連接不存在之前不能用於其他任何事情。端口5223用於Apple的推送通知。盡我所知,您的計算機偶然使用隨機端口49161連接到Apple的服務器。以前,當Docker容器工作時,我會打賭您的計算機上的端口49161未被使用。

每當您連接到遠程服務器時,您自己的計算機將爲該連接分配一個隨機端口號。這一次,您的計算機在連接​​到Apple的推送通知服務時分配了49161。下一次,它可能是一個完全不同的數字。請參閱https://en.wikipedia.org/wiki/Ephemeral_port

相關問題