Không thể kết nối mongodb trong docker
Câu trả lời thực sự được cung cấp trong nhận xét đầu tiên (và nó đã giải quyết cho tôi cùng một vấn đề), nhưng sẽ dễ dàng tìm thấy nó hơn khi nó nằm trong phần Trả lời Show
Câu trả lời sẽ cho rằng bạn đang sử dụng Docker Toolbox Thay vì chạy
lệnh sau sẽ được chạy
Để có được máy ảo 0
Giải pháp liên quanDocker – Gửi tệp từ bộ chứa Docker đến máy chủ lưu trữ bằng nc. Tại sao máy chủ nc đóng kết nối quá sớmSử dụng lệnh 2, tập lệnh có thể được viết lại như vậy
netcat hiện chỉ được sử dụng như một loại cơ chế nhắn tin, để bộ chứa báo hiệu cho máy chủ khi nó được xây dựng xong (để máy chủ có thể bắt đầu sao chép) và để máy chủ báo hiệu cho bộ chứa rằng nó đã sao chép tệp xong ( Debian – Kết nối với Mongodb Bi-connector từ xa trong dockerĐược rồi, tôi đã tìm ra vấn đề. Bây giờ nó hoạt động như một nét duyên dáng Hóa ra khi ở trong một vùng chứa, tệp thực thi mongodrdl cần tùy chọn --addr được đặt với tên máy chủ lưu trữ của vùng chứa làm tên vùng chứa (không hoạt động với localhost hoặc 127. 0. 0. 1) Như thế này
Tôi đã xuất bản nguồn của mình trên github và hình ảnh docker trên trung tâm docker https. //github. com/emmanuelvisage/docker-mongo-bi-connector https. // trung tâm. người đóng tàu. com/r/visage/mongodb-bi-connector/ Docker container chạy trong một môi trường biệt lập bao gồm các mạng ảo riêng biệt theo mặc định. Mặc dù bạn có thể chạy MongoDB của mình trong vùng chứa được kết nối với mạng ảo như vậy, nhưng. g. bằng cách sử dụng docker-compose, có thể có những trường hợp bạn muốn sử dụng một phiên bản MongoDB cục bộ và kết nối với nó từ một vùng chứa Mục lục Mạng cầu DockerĐể thiết lập kết nối mạng giữa máy chủ và vùng chứa, có thể sử dụng mạng cầu nối Docker. Một tiêu chuẩn có tên là 3 luôn hiện diện và được tạo theo mặc định. Bạn có thể kiểm tra nó bằng lệnh 4
Lưu ý rằng mạng này có một 5 với IP 0. Điều này chúng tôi sẽ sử dụng để kết nối từ vùng chứa với MongoDB của chúng tôi đang chạy trên máy chủTheo tài liệu Docker về kết nối mạng, mạng cầu nối mặc định không nên được sử dụng cho các kịch bản sản xuất nhưng tốt cho mọi môi trường phát triển/thử nghiệm. Trong bài này chúng ta sẽ tiếp tục sử dụng bridge mặc định Kết nối với MongoDB cục bộ của bạn từ DockerĐể kết nối với phiên bản MongoDB cục bộ của bạn từ Vùng chứa, trước tiên bạn phải cho phép chấp nhận kết nối từ cổng cầu nối Docker. Để làm như vậy, chỉ cần thêm IP cổng tương ứng vào tệp cấu hình MongoDB 1 trong phần 2 trong phần giao diện mạng
Lưu ý rằng liên kết với 0. 0. 0. 0 cũng sẽ thực hiện thủ thuật nhưng không được khuyến nghị vì lý do bảo mật Thứ hai, bạn nên chọn tên máy chủ để truy cập cơ sở dữ liệu. Hãy sử dụng 3 cho điều đó. Trong ứng dụng được đóng gói của bạn, hãy sử dụng tên máy chủ này trong chuỗi kết nối, như vậy…
Để giới thiệu tên máy chủ 3 trong mạng ảo vùng chứa và liên kết nó với máy chủ lưu trữ cục bộ của chúng tôi nơi MongoDB đang chạy, chỉ cần sử dụng 5 với IP cổng mạng cầu mà chúng tôi đã phát hiện trước đó 2Có điều này tại chỗ, vùng chứa Docker của bạn giờ đây có thể giao tiếp với máy chủ lưu trữ bằng cách sử dụng bí danh 3 và bạn đã sẵn sàng để kết nối với MongoDB cục bộ 🙂Mẹo. sử dụng bí danh tên máy chủ giống hệt nhau cho MongoDB cục bộĐể tránh sự không nhất quán và thay đổi cấu hình giữa việc chạy ứng dụng của bạn trong môi trường nhà phát triển cục bộ và vùng chứa Docker, chỉ cần thêm mục nhập cho tên máy chủ đã sử dụng 3 vào 8 của bạn 6Giờ đây, bạn cũng có thể sử dụng chính xác chuỗi kết nối đó trong môi trường nhà phát triển cục bộ của mình Xử lý sự cố. MongoDB không khởi động nữaSau khi thêm IP cổng cầu nối Docker vào cấu hình của MongoDB như được mô tả trước đây, bạn có thể gặp sự cố khi cố gắng khởi động MongoDB. Mặc dù trước đây mọi thứ đều ổn 7Nếu đúng như vậy, rất có thể do Docker không chạy. Đảm bảo khởi động Docker trước MongoDB. Nếu không thì MongoDB sẽ không khởi động được vì Docker bridge gateway không khả dụng và nó không thể liên kết với nó 8Nếu bạn muốn bắt đầu MongoDB mà không cần Docker chạy, thì bạn cần xóa hoặc nhận xét IP của cổng trong 1
Làm cách nào để kết nối với MongoDB từ Docker?Bạn có thể kết nối với MongoDB trên máy chủ cục bộ. 27017 . Sau đó sử dụng lệnh sau để mở trình bao MongoDB. Tôi đã sử dụng mymongo làm tên vùng chứa tùy ý, mặc dù vậy bạn có thể thay thế mymongo bằng test-mongo hoặc bất kỳ tên vùng chứa nào khác mà bạn chọn. Lệnh show dbs sẽ hiển thị tất cả các cơ sở dữ liệu hiện có của bạn.
Tại sao MongoDB của tôi không kết nối?Nếu bạn đã tạo người dùng và gặp sự cố khi xác thực, hãy thử cách sau. Kiểm tra xem bạn có đang sử dụng đúng tên người dùng và mật khẩu cho người dùng cơ sở dữ liệu của mình không và bạn có đang kết nối với đúng cơ sở triển khai cơ sở dữ liệu không . Kiểm tra xem bạn có đang chỉ định đúng cơ sở dữ liệu authSource trong chuỗi kết nối của mình không.
Làm cách nào để thêm MongoDB vào Dockerfile?1. 1 Tạo tệp Docker. Tạo một tệp có tên Dockerfile trong bất kỳ thư mục nào trên máy cục bộ. $ cd ~/Johnny $ mkdir Docker $ cd Docker $ vim Dockerfile. . 1. 2 Tạo Image với Dockerfile. Mở Docker terminal, điều hướng đến thư mục chứa Dockerfile Cách kết nối MongoDB kết nối?Cách kết nối với MongoDB . Tạo cơ sở dữ liệu trên MongoDB. Kết nối với vỏ MongoDB. Tạo cơ sở dữ liệu "testdb". Tạo bộ sưu tập "người dùng" và chèn nó vào "testdb" Thiết lập người dùng. Kết nối với db quản trị. Tạo quản trị viên người dùng. . Tạo kết nối tới MongoDB trên CPD. Đặt thông tin cần thiết |