Docker 失败:端口已分配

Docker 失败:端口已分配,docker,docker-for-mac,Docker,Docker For Mac,我使用Docker在macOS Sierra 10.12.2上运行Oracle 11g Express 这是我的错误: 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

我使用Docker在macOS Sierra 10.12.2上运行Oracle 11g Express

这是我的错误:

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.
➜  ~ 
I诊断:

➜  ~ 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
我的Dianostic ID:20EB9506-CC72-4093-8A15-60E05A841ED1


我不知道为什么。在那几周之前,它已经成功运行了。我几乎改变了,发布了新的DHCP IP。如何运行Docker实例使Oracle 11g express成功?

您不能启动两次

docker run-d-p 49160:22

因为这意味着您要在主机上分配端口49160两次,当然,第二次,您会收到错误消息,请尝试第二次运行


docker run-d-p 49161:22

您需要使用不同的端口,而不是49161。请尝试小于49152的端口

您的计算机上的端口49161与远程Apple服务器上的端口5223之间已有连接。因此,在该连接停止存在之前,该端口不能用于任何其他用途。端口5223用于苹果的推送通知。据我所知,你的电脑这次碰巧使用了随机端口49161连接到苹果的服务器。以前,当Docker容器工作时,我敢打赌您计算机上的端口49161当时没有被使用


无论何时连接到远程服务器,您自己的计算机都会为该连接分配一个随机端口号。这一次,当您的计算机连接到苹果的推送通知服务时,它分配了49161。下一次,它可能是一个完全不同的数字。请参见

您确定没有此容器的另一个实例正在运行并使用此TCP端口吗?查看
docker ps
,确保它不在那里,如果已经在那里,就停止它(在启动另一个之前)。一次只能有一个进程绑定到TCP端口。对我来说,事实证明,MySQL在每次计算机启动时都会启动,所以它在后台运行,而我对此一无所知。其他有此问题的人也应该检查他们的系统首选项(在Mac上),单击MySQL选项卡,并在计算机启动时禁用启动MySQL。