ошибка: порт уже выделен

Я использую Docker для запуска Oracle 11g Express на macOS Sierra 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

мой Dianostic ID: 20EB9506-CC72-4093-8A15-60E05A841ED1

Я не знаю, почему. До этого несколько недель все шло успешно. Почти, меняю, выпускаю новый DHCP IP. Как запустить экземпляр Docker имеет Oracle 11g express успех?

2 ответов


вы не можете запустить два раза

docker run -d -p 49160:22

поскольку это означает, что вы хотите выделить порт 49160 на хосте дважды, конечно, во второй раз, вы получите сообщение об ошибке, попробуйте для второго запуска

docker run -d -p 49161:22


вам нужно будет использовать другой порт вместо 49161. Попробуйте порт меньше 49152.

У вас есть уже существующее соединение между портом 49161 на вашем компьютере и портом 5223 на удаленном сервере Apple. Поэтому этот порт не может использоваться ни для чего другого, пока это соединение не прекратит существовать. Порт 5223 используется для push-уведомлений Apple. Насколько я могу судить, на этот раз ваш компьютер использовал случайный порт 49161 для подключения к серверу Apple. Ранее, когда этот контейнер Docker работал, я бы поспорил, что порт 49161 на вашем компьютере не использовался.

всякий раз, когда вы подключаетесь к удаленному серверу, ваш собственный компьютер выделяет случайный номер порта для подключения. На этот раз ваш компьютер выделил 49161 при подключении к службе push-уведомлений Apple. В следующий раз это может быть совсем другое число. См.https://en.wikipedia.org/wiki/Ephemeral_port