Docker EXPOSE một cổng chỉ đến Máy chủ lưu trữ


99

Docker có khả năng chỉ để lộ một cổng cho máy chủ và không cho bên ngoài.

Tôi cần đặt một docker chạy với cơ sở dữ liệu mongo và tôi muốn rằng nó chỉ có thể truy cập được từ máy chủ lưu trữ, nhưng tôi cần liên kết cổng máy chủ 27017.

Điều này có khả thi không, hay cách duy nhất có thể là thay đổi định nghĩa tường lửa?

Câu trả lời:


140

Chắc chắn, chỉ cần liên kết nó với localhost, như thế này:

docker run -p 127.0.0.1:27017:27017

Ngoài ra: Máy chủ của bạn cũng có thể nói chuyện với từng vùng chứa thông thường qua IP của nó. Sử dụng docker inspect $IDđể lấy một json dump (bên cạnh những thứ khác) có chứa IP mạng.


4
Vì vậy, nó giống như [1] docker run -p 27017: 27017 -v / var / lib / mongodb / master: / data mongo: storage_test / usr / bin / start-mongo [2] docker run -p 127.0.0.1: 27017: 27017 ...?
Ruben

17
Tùy chọn thứ hai liên kết với localhost, có. Cái đầu tiên công khai cổng. Nếu bạn không muốn một cổng tĩnh, hãy sử dụng 127.0.0.1::27017.
ZeissS

3
Giải pháp này dường như không hoạt động cho chế độ bầy đàn, hãy xem vấn đề này trên github
bsimpson53

1
Docker-soạn tương đương có đơn giản service-name: { ... ports: [ "127.0.0.1:27017:27017" ] }không?
Groostav

1
Vấn đề trong trình soạn thảo của tôi là gì mặc dù chỉ liên kết với localhost nhưng Nó có thể truy cập công khai. stackoverflow.com/questions/50621936/…
Tara Prasad Gurung,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.