如何使用Docker部署MongoDB并結合內網穿透實現遠程訪問本地數據庫

文章目錄

    • 前言
    • 1. 安裝Docker
    • 2. 使用Docker拉取MongoDB鏡像
    • 3. 創建并啟動MongoDB容器
    • 4. 本地連接測試
    • 5. 公網遠程訪問本地MongoDB容器
      • 5.1 內網穿透工具安裝
      • 5.2 創建遠程連接公網地址
      • 5.3 使用固定TCP地址遠程訪問

正文開始前給大家推薦個網站,前些天發現了一個巨牛的 人工智能學習網站, 通俗易懂,風趣幽默,忍不住分享一下給大家。 點擊跳轉到網站。

前言

本文主要介紹如何在Linux Ubuntu系統使用Docker快速部署MongoDB,并結合cpolar內網穿透工具實現公網遠程訪問本地數據庫。

MongoDB服務端可以運行在Linux、Windows、MacOS平臺,可以存儲比較復雜的數據類型,支持的查詢語言非常強大,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,還可以對數據建立索引。

直接實用包管理器安裝MongoDB比較復雜,使用Docker安裝部署MongoDB則相對簡單快速,下面就和大家分享一下具體操作流程。

0920c95b762166d005b42f74d46e654

1. 安裝Docker

本教程操作環境為Linux Ubuntu系統,在開始之前,我們需要先安裝Docker。

在終端中執行下方命令:

添加Docker源

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg# Add the repository to Apt sources:
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安裝Dokcer包

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

通過運行映像來驗證 Docker 引擎安裝是否成功

sudo docker run hello-world

2. 使用Docker拉取MongoDB鏡像

sudo docker pull mongo

image-20240221134922055

然后執行查看鏡像命令:

sudo docker images

image-20240221135030232

可以看到成功拉取了MongoDB鏡像。

3. 創建并啟動MongoDB容器

成功拉取MongoDB鏡像后,我們可以使用該鏡像創建并運行一個MongoDB容器。

首先在宿主機上創建存儲目錄/docker_mount/mongodb/data,用于持久化MongoDB數據。

您可以使用以下命令進行創建:

sudo mkdir -p /docker_mount/mongodb/data

然后在終端執行以下命令運行容器:

sudo docker run -d -p 27017:27017 --name mongodb -v /docker_mount/mongodb/data:/data/db -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=password mongo

1708500820559

參數說明:

  • –name excalidraw:本例容器名稱為mongodb,大家可以自己起名。
  • **-e MONGO_INITDB_ROOT_USERNAME=root:**初始化一個root角色的用戶root
  • **-e MONGO_INITDB_ROOT_PASSWORD=password:**密碼是password,大家可以自己設置。
  • -p 27017:27017: 端口進行映射,將本地27017端口映射到容器內部的27017端口。
  • **-d ** :設置容器在在后臺一直運行。

然后執行下方命令查看容器是否正在運行:

sudo docker ps

image-20240221153852667

可以看到剛才創建的MongoDB容器正在運行中。

4. 本地連接測試

OK,經過以上過程,docker部署 mongodb 就完成了,現在我們可以通過Navicat進行連接測試。

我使用的 Navicat 的版本是 16,如下圖新建 mongodb 的連接:

主機填寫宿主機ip,大家可以在終端中輸入 ip addr命令進行查看。

端口填寫:27017

驗證填寫:admin

用戶名和密碼填寫剛才啟動容器時設置的賬號密碼:root和password

image-20240221154325747

然后點擊測試連接,可以看到連接成功!

5. 公網遠程訪問本地MongoDB容器

不過我們目前只能在本地連接剛剛使用docker部署的MongoDB服務,如果身在異地,想要遠程訪問在本地部署的MongoDB容器,但又沒有公網ip怎么辦呢?

我們可以使用cpolar內網穿透工具來實現無公網ip環境下的遠程訪問需求。

5.1 內網穿透工具安裝

下面是安裝cpolar步驟:

cpolar官網地址: https://www.cpolar.com

  • 使用一鍵腳本安裝命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系統添加服務
sudo systemctl enable cpolar
  • 啟動cpolar服務
sudo systemctl start cpolar

cpolar安裝成功后,在外部瀏覽器上訪問Linux 的9200端口即:【http://服務器的局域網ip:9200】,使用cpolar賬號登錄,登錄后即可看到cpolar web 配置界面,結下來在web 管理界面配置即可。

image-20230831171159175

5.2 創建遠程連接公網地址

登錄cpolar web UI管理界面后,點擊左側儀表盤的隧道管理——創建隧道:

  • 隧道名稱:可自定義,注意不要與已有的隧道名稱重復,本例使用了:mongo1
  • 協議:tcp
  • 本地地址:27017
  • 域名類型:隨機域名
  • 地區:選擇China VIP

點擊創建

image-20240221160200575

然后打開在線隧道列表,查看并且復制tcp協議的公網地址,注意tcp://無需復制

image-20240221160228682

打開navicat或者其他連接工具,主機選項輸入上面我們cpolar中創建的公網地址,端口號對應地址冒號后面生成的公網端口號。

image-20240221160051207

然后點擊測試連接,可以看到連接成功!

小結

為了方便演示,我們在上邊的操作過程中使用了cpolar生成的TCP公網地址隧道,其公網地址是隨機生成的。

這種隨機地址的優勢在于建立速度快,可以立即使用。然而,它的缺點是網址是隨機生成,這個地址在24小時內會發生隨機變化,更適合于臨時使用。

如果有長期遠程訪問本地MongoDB服務的需求,但又不想每天重新配置公網地址,還想地址好看又好記,那我推薦大家選擇使用固定的TCP地址來遠程訪問。

5.3 使用固定TCP地址遠程訪問

登錄cpolar官網后臺,點擊左側的預留,找到保留的tcp地址,我們來為遠程連接MongoDB數據庫保留一個固定tcp地址。

  • 地區:選擇China vip
  • 描述:即備注,可自定義

點擊保留

image-20240221160835462

地址保留成功后,系統會生成相應的固定公網地址,將其復制下來

本例中地址為:6.tcp.vip.cpolar.cn:13644

然后在瀏覽器上訪問Linux局域網ip地址+:9200端口,登錄cpolar web ui管理界面。

點擊左側儀表盤的隧道管理——隧道列表,找到我們上面創建的遠程數據庫隧道,點擊右側的編輯

image-20240221161016132

修改隧道信息,將保留成功的固定tcp地址配置到隧道中

  • 端口類型:修改為固定tcp端口
  • 預留的tcp地址:填寫官網保留成功的地址,

點擊更新

image-20240221161130133

隧道更新成功后,點擊左側儀表盤的狀態——在線隧道列表,可以看到公網地址已經更新成為了固定tcp地址。

image-20240221161207657

打開連接工具,輸入官網保留的固定tcp地址,端口為地址后面對應的公網端口號,點擊測試連接。

image-20240221161332281
出現連接成功表示成功,現在這個公網地址不會再隨機變化,只要保持隧道正常在線,我們在外就可以通過這個公網地址遠程連接到局域網內的MongoDB數據庫。

以上就是如何在Ubuntu系統使用Docker部署MongoDB容器,并結合cpolar內網穿透工具實現公網遠程訪問內網本地服務的全部流程,感謝您的觀看。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696102.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696102.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696102.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2024最佳住宅代理IP服務商有哪些?

跨境出海已成為了近幾年的最熱趨勢,大批量的企業開始開拓海外市場,而海外電商領域則是最受歡迎的切入口。新興的tiktok、Temu,老牌的Amazon、Ebay,熱門的Etsy、Mecari等等都是藍海一片。跨境入門并不難,前期的準備中不…

深入理解文件查看命令:cat、more、less、tail、head

在Linux系統中,有許多命令用于查看文件的內容,其中包括cat、more、less、tail和head。這些命令提供了不同的方式來瀏覽文本文件,適用于各種查看需求。在本篇博客中,我們將深入介紹這些命令,并通過示例演示它們的用法。…

Spring Boot打war包部署到Tomcat,訪問頁面404 !!!

水善利萬物而不爭,處眾人之所惡,故幾于道💦 文章目錄 Spring Boot打war包部署到Tomcat,訪問頁面404 !!!解決辦法:檢查Tomcat版本和Jdk的對應關系,我的Tomcat是6.x&#x…

Sping基礎篇----掌握Sping的控制反轉/依賴注入的概念【實戰案例總結】

作為一名對技術充滿熱情的學習者,我一直以來都深刻地體會到知識的廣度和深度。在這個不斷演變的數字時代,我遠非專家,而是一位不斷追求進步的旅行者。通過這篇博客,我想分享我在某個領域的學習經驗,與大家共同探討、共…

SMMU介紹

SMMU(System Memory Management Unit)是一種硬件設備,其作用是在虛擬地址空間和物理地址空間之間提供地址轉換的功能。它通常用于處理虛擬化環境中的 I/O 設備,例如虛擬機中的設備訪問或者容器環境中的設備隔離。 SMMU 的主要作用…

KVM虛擬機的克隆方式

話不多說,直接上操作 首先確定我們要克隆的模板機器,這樣可以方便我們后續克隆許多機器 IP獲取最好就是dhcp模式,這樣克隆出來的機器就不需要自己再去改ip了 確定需要克隆的模板機以后,先關機再執行克隆操作 virsh shutdown ser…

【SiamFC】《Fully-Convolutional Siamese Networks for Object Tracking》

ECCV 2016 Workshops 文章目錄 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method5 Experiments5.1 Datasets and Metrics5.2 The OTB-13 benchmark5.3 The VOT benchmarks5.4 Dataset size 6 Conclusion(own)/ Future wo…

Android系統啟動流程

android的啟動流程是從底層開始進行的,具體如下所示: Android是基于Linux內核的系統,Android的啟動過程主要分為兩個階段,首先是Linux內核的啟動,然后是Android框架的啟動。 可以將Andorid系統的啟動流程分為以下五個…

【QT 5 +Linux下軟件桌面快捷方式+qt生成軟件創建桌面圖標+學習他人文章+第二篇:編寫桌面文件.desktop】

【QT 5 Linux下軟件桌面快捷方式qt生成軟件創建桌面圖標學習他人文章第二篇:編寫桌面文件.desktop】 1、前言2、實驗環境3、自我學習總結-本篇總結1、新手的疑問,做這件事目的2、了解.desktop3、三個關鍵目錄以及文件編寫1、目錄:/opt/2、目錄…

【鴻蒙 HarmonyOS 4.0】開發工具安裝

一、準備開發環境 1.1、安裝IDE 鴻蒙應用開發需要使用配套的IDE——HUAWEI DevEco Studio。 DevEco Studio基于IntelliJ IDEA Community(IDEA社區版)構建,為鴻蒙應用提供了一站式開發環境,集成了開發、運行、調試以及發布應用的…

【leetcode刷題之路】面試經典150題(3)——哈希表+區間

文章目錄 5 哈希表5.1 【哈希表】贖金信5.2 【數學】同構字符串5.3 【數學】單詞規律5.4 【哈希表】有效的字母異位詞5.5 【哈希表】字母異位詞分組5.6 【雙指針】兩數之和5.7 【數學】快樂數5.8 【哈希表】219. 存在重復元素 II5.9 【數學】最長連續序列 6 區間6.1 【數學】匯…

Stable Diffusion 模型分享:AstrAnime(Astr動畫)

本文收錄于《AI繪畫從入門到精通》專欄,專欄總目錄:點這里。 文章目錄 模型介紹生成案例案例一案例二案例三案例四案例五 下載地址 模型介紹 AstrAnime 是一個動漫模型,畫風色彩鮮明,擅長繪制漂亮的小姐姐。 條目內容類型大模型…

fastjson解析自定義get方法導致空指針問題

背景 為了在日志中把出入參打印出來,以便驗證鏈路和排查問題,在日志中將入參用fastjson格式化成字符串輸出,結果遇到了NPE。 問題復現 示例代碼 public static void main(String[] args) {OrganizationId orgId new OrganizationId();N…

規模化強化學習 — 多任務強化學習

1 簡述 1.1 單任務強化學習(STRL) 在單任務強化學習中,一個無人機的AI系統可能被訓練來執行特定的任務,比如自主導航。在這個任務中,無人機需要學習如何有效地從起點飛行到終點,并避開障礙物。 舉例&#…

【Java多線程】分析線程加鎖導致的死鎖問題以及解決方案

目錄 1、線程加鎖 2、死鎖問題的三種經典場景 2.1、一個線程一把鎖 2.2、兩個線程兩把鎖 2.3、N個線程M把鎖(哲學家就餐問題) 3、解決死鎖問題 1、線程加鎖 其中 locker 可以是任意對象,進入 synchronized 修飾的代碼塊, 相當于加鎖&…

Java SourceDataLine 播放音頻

Java SourceDataLine 播放音頻 1 依賴2 接口3 實現4 測試 項目Value音頻格式 添加依賴*.wav(JDK 原生支持)*.pcm(JDK 原生支持)*.au(JDK 原生支持)*.aiff(JDK 原生支持)*.mp3mp3spi.jar*.flacjflac-codec.jar 1 依賴 <dependency><groupId>com.googlecode.soundl…

?北郵復試刷題LCR 052. 遞增順序搜索樹__DFS (力扣119經典題變種挑戰)

LCR 052. 遞增順序搜索樹 給你一棵二叉搜索樹&#xff0c;請 按中序遍歷 將其重新排列為一棵遞增順序搜索樹&#xff0c;使樹中最左邊的節點成為樹的根節點&#xff0c;并且每個節點沒有左子節點&#xff0c;只有一個右子節點。 示例 1&#xff1a; 輸入&#xff1a;root [5,…

DataX - 全量數據同步工具

前言 今天是2024-2-21&#xff0c;農歷正月十二&#xff0c;相信今天開始是新的階段&#xff0c;盡管它不是新的周一、某月一日、某年第一天&#xff0c;盡管我是一個很講究儀式感的人。新年剛過去 12 天&#xff0c;再過 3 天就開學咯&#xff0c;開學之后我的大學時光就進入了…

TypeScript01:安裝TypeScript

一、TypeScript 官方網站&#xff1a;https://www.tslang.cn/docs/index.html 練習場&#xff1a;https://www.typescriptlang.org/zh/play 好處&#xff1a; 強類型語言&#xff0c;對JS弱類型的一個良好補充&#xff1b;TS利于大型項目團隊合作&#xff0c;可以一定程度…

這五個軟件測試工具,測試工程師必備

在軟件開發過程中&#xff0c;軟件測試是確保軟件質量和穩定性的關鍵環節。為了幫助開發人員和測試團隊更好地完成這一任務&#xff0c;市面上涌現出眾多軟件測試工具。本文將盤點五個備受推崇的軟件測試工具&#xff0c;它們各具特色&#xff0c;適用于不同的測試場景。 Test…