2017-01-07 19 views
5

tôi sử dụng Docker để chạy Oracle 11g Express trên hệ điều hành MacOS Sierra 10.12.2thất bại: cổng đã được phân bổ

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

Đây là lỗi của tôi:

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. 
➜ ~ 

tôi chẩn đoán:

➜ ~ 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 vô lý của tôi: 20EB9506-CC72-4093-8A15-60E05A841ED1

Tôi không biết tại sao. Trước đó vài tuần, nó chạy thành công. Gần như, tôi thay đổi, phát hành DHCP IP mới. Làm thế nào để chạy trường hợp Docker có Oracle 11g thể hiện thành công?

+2

Bạn có chắc chắn không có một phiên bản nào khác của vùng chứa này đang chạy và sử dụng cổng TCP này không? Nhìn vào 'docker ps' và chắc chắn rằng nó chưa có ở đó, và dừng lại nếu nó là (trước khi bắt đầu một cái khác). Chỉ có một quy trình có thể liên kết với một cổng TCP tại một thời điểm. –

Trả lời

5

bạn không thể khởi động hai lần

docker run -d -p 49160:22

vì điều này có nghĩa là bạn muốn phân bổ các 49.160 cổng trên máy chủ hai lần, tất nhiên, lần thứ hai, bạn sẽ có được bạn thông báo lỗi, hãy thử cho chạy thứ hai

docker run -d -p 49161:22

0

Bạn sẽ cần phải sử dụng một cổng khác nhau thay vì 49161. Hãy thử một cổng ít hơn 49152.

Bạn có kết nối có sẵn từ cổng 49161 trên máy tính và cổng 5223 trên máy chủ Apple từ xa. Do đó, cổng đó không thể được sử dụng cho bất kỳ thứ gì khác cho đến khi kết nối đó chấm dứt tồn tại. Cổng 5223 được sử dụng cho các thông báo đẩy của Apple. Tốt nhất là tôi có thể nói, máy tính của bạn đã xảy ra để sử dụng cổng ngẫu nhiên 49161 để kết nối với máy chủ của Apple lần này. Trước đây khi đó Docker container làm việc, tôi sẽ đặt cược cổng 49161 trên máy tính của bạn sau đó không được sử dụng.

Bất cứ khi nào bạn kết nối với máy chủ từ xa, máy tính của riêng bạn sẽ phân bổ số cổng ngẫu nhiên cho kết nối đó. Khoảng thời gian này, máy tính của bạn được phân bổ 49161 khi nó kết nối với dịch vụ thông báo đẩy của Apple. Lần tới, nó có thể là một con số hoàn toàn khác. Xem https://en.wikipedia.org/wiki/Ephemeral_port

Các vấn đề liên quan