使用Docker容器部署MongoDB并支持遠(yuǎn)程訪問(wèn)及遇到的坑
前言
由于使用寶塔面板來(lái)配置MongoDB
的BUG太多,實(shí)在受不了,今天心血來(lái)潮想要使用Docker容器來(lái)進(jìn)行部署。本來(lái)以為也就二三十分鐘的事情結(jié)果踩坑踩了將近兩個(gè)小時(shí),不過(guò)萬(wàn)幸還是成功部署上了
Docker & MongoDB
在開(kāi)始講之前,我們需要知道Docker
和MongoDB
是什么,雖然這兩個(gè)工具已經(jīng)非常流行,但可能還是有讀者不知道其詳細(xì)概念
Docker
Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴(lài)包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的 Linux或Windows操作系統(tǒng)的機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
MongoDB
MongoDB是一個(gè)基于分布式文件存儲(chǔ) [1] 的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫(xiě)。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類(lèi)似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類(lèi)型。Mongo最大的特點(diǎn)是它支持的查詢(xún)語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類(lèi)似于面向?qū)ο蟮牟樵?xún)語(yǔ)言,幾乎可以實(shí)現(xiàn)類(lèi)似關(guān)系數(shù)據(jù)庫(kù)單表查詢(xún)的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。
使用Docker部署MongoDB
Docker的安裝請(qǐng)參照其他文章
在進(jìn)入我們服務(wù)器的終端后就可以開(kāi)始操作了,首先我們要拉取最新的mongo
鏡像
$ docker pull mongo:latest
使用docker images
來(lái)檢查是否成功拉取鏡像
$ docker images
接下來(lái)我們就可以讓鏡像跑起來(lái)并跑在27017端口
若跑在其他端口會(huì)有坑,后面講
$ docker run -itd --name mongo -p 27017:27017 mongo
我們可以使用docker ps
來(lái)驗(yàn)證是否已經(jīng)跑起來(lái)了,下一步我們直接進(jìn)入容器中
$ docker exec -it mongo /bin/bash
接下來(lái)我們不慌著直接使用mongo
命令,因?yàn)橹苯邮褂玫脑捑蜁?huì)踩坑。我們的目的是部署了MongoDB
并能讓其支持遠(yuǎn)程訪問(wèn),所以我們需要先去更改它的配置文件,更改配置文件需要使用到vim
,所以我們還需要下載vim
,但我們知道,直接下載的話非常緩慢,所以我們還得給容器換一個(gè)源
容器中換源
正則替換成阿里的鏡像可以快速update
$ sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list $ sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list $ apt clean $ apt-get update -y
更改配置
接下來(lái)就可以下載vim
并更改配置了
$ apt-get install vim $ vim /etc/mongod.conf.orig
進(jìn)入到配置我們中將其中的bindIp: 127.0.0.1
注釋掉# bindIp: 127.0.0.1
,或改成0.0.0.0
即可。除此之外,若你MongoDB
部署的端口不是27017,也應(yīng)該進(jìn)行替換(坑點(diǎn)之一,對(duì)應(yīng)上文)
在這之后就可以進(jìn)行連接了
開(kāi)放端口
我們需要開(kāi)放端口并還需在服務(wù)器添加安全組策略,若兩個(gè)中有一個(gè)沒(méi)開(kāi)都是訪問(wèn)不到的
到此這篇關(guān)于使用Docker容器部署MongoDB并支持遠(yuǎn)程訪問(wèn)及遇到的坑的文章就介紹到這了,更多相關(guān)Docker部署MongoDB內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker安裝node-red、導(dǎo)入節(jié)點(diǎn)、部署查看的步驟詳解
Node-RED設(shè)計(jì)使用的場(chǎng)景是IoT,但是作為一個(gè)流編排引擎,顯然它能做的事情更多,比如使用容器化的方式進(jìn)行構(gòu)建、打包、部署等操作也是可行的,這篇文章繼續(xù)介紹Docker安裝node-red、導(dǎo)入節(jié)點(diǎn)、部署查看的相關(guān)知識(shí),感興趣的朋友一起看看吧2022-01-01docker容器設(shè)置時(shí)區(qū)的幾種方式小結(jié)
Docker的基礎(chǔ)鏡像設(shè)置大多是Etc/UTC,也就是標(biāo)準(zhǔn)的UTC 時(shí)間,所以要簡(jiǎn)單的調(diào)整一下,本文主要介紹了docker容器設(shè)置時(shí)區(qū)的幾種方式小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05docker部署MySQL時(shí)無(wú)法啟動(dòng)問(wèn)題的解決方法
最近做項(xiàng)目,遇到這樣問(wèn)題,docker中的mysql不能啟動(dòng),下面這篇文章主要給大家介紹了關(guān)于docker部署MySQL時(shí)無(wú)法啟動(dòng)問(wèn)題的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01修改docker容器端口映射到主機(jī)的方法實(shí)現(xiàn)
Docker容器的端口映射是通過(guò)docker run命令來(lái)啟動(dòng)容器,并指定端口映射參數(shù),本文主要介紹了修改docker容器端口映射到主機(jī)的方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Docker中Harbor企業(yè)級(jí)鏡像倉(cāng)庫(kù)的搭建與使用
本文介紹了Harbor企業(yè)級(jí)鏡像倉(cāng)庫(kù)的搭建與使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12