MongoDB je populární databáze dokumentů s otevřeným zdrojovým kódem, která poskytuje vysoký výkon a velkou flexibilitu. Ale zkusili jste kontejnerizovat databázi MongoDB pro vaše projekty? Pokud ne, pak se máte na co těšit!
V tomto tutoriálu se dozvíte, jak efektivně nasadit, zabezpečit a spravovat MongoDB pomocí Dockeru. Takže čtěte dál a staňte se svým vlastním mistrem v nasazování kontejnerů Docker MongoDB!
Předpoklady
Tento tutoriál obsahuje praktické ukázky. Chcete-li pokračovat, ujistěte se, že máte následující:
- Počítač Ubuntu – Tento výukový program používá Ubuntu 20.04 LTS
- Uživatel s
sudo
povolení - Docker – Tento výukový program používá Docker 20.10.9
Stažení obrázku Docker MongoDB
Než budete moci nasadit a spravovat kontejner Docker MongoDB, musíte si nejprve stáhnout obraz MongoDB z centra Docker, abyste mohli kontejner MongoDB spustit lokálně.
Spusťte docker
příkaz níže ke stažení obrázku MongoDB Community Edition (CE) (pull mongo
), který Docker Hub hostuje. Nejnovější verze tohoto obrázku v době psaní tohoto článku je 4.2.
sudo docker pull mongo
Jak můžete vidět níže, příkaz automaticky stáhne nejnovější verzi obrázku a označí ji jako nejnovější .
Nyní spusťte docker images
příkazem níže zobrazíte seznam všech obrázků dostupných na vašem serveru.
sudo docker images
Níže můžete vidět obrázek MongoDB označený jako nejnovější .
Nasazení kontejneru Docker MongoDB
Ze staženého obrazu MongoDB nyní můžete nasadit kontejner MongoDB. Inicializujete svůj kontejner MongoDB pomocí spustitelného souboru mongo a vytvoříte datový adresář. Poté definujete mapování mezi datovou oblastí kontejneru Docker a hostitelským počítačem.
1. Spusťte mkdir
příkaz níže k vytvoření datového adresáře s názvem mongodata
k ukládání databáze MongoDB a protokolů.
sudo mkdir -p /mongodata
2. Dále spusťte docker run
příkaz níže k vytvoření kontejneru s názvem mymongo
. Kromě toho je kontejner spuštěn interaktivním pseudo-TTY (-it
), v případě, že by se měl výstup zobrazit při spouštění kontejneru.
Nakonec nově vytvořený adresář mongodata je vázán (-v
) do interního adresáře /data/db . -d
volba spustí kontejner v odpojeném režimu, takže běží jako proces na pozadí a po vytvoření vrací výstup konzoly.
Systém automaticky vytvoří /data/db adresář při spuštění kontejneru pro uložení dat změn, které v kontejneru provedete. Tento adresář běží v podobném režimu jako pouze pro čtení a umožňuje trvalé ukládání dat na hostitelském systému.
sudo docker run -it -v mongodata:/data/db --name mymongo -d mongo
Po úspěšném dokončení příkazu uvidíte výstup podobný tomu níže.
3. Nakonec spusťte docker ps
příkaz níže k identifikaci ID kontejneru a kontrole jeho stavu. docker ps
zobrazí všechny informace o aktuálně spuštěném kontejneru.
docker ps
příkaz je srovnatelný s běžnýmps
příkaz v Linuxu.
sudo docker ps
Ve výstupu zobrazeném níže můžete vidět Porty sekce, která uvádí všechny porty přiřazené kontejneru pro naslouchání příchozím připojením.
V tomto příkladu port 27017 je namapován na hostitele. Níže uvedený výstup ukazuje, že máte přístup k instanci MongoDB v tomto kontejneru přes localhost:27017 od hostitele.
Možná chcete vidět soubor protokolu
mymongo
kontejner, abyste zjistili, co se stalo ve vaší mongo databázi/instanci, když se s ní něco pokazilo. Pokud ano, spusťtedocker logs
příkaz, jako je tento:sudo docker logs docker-container
. Nahraďtedocker-container
s názvem vašeho kontejneru Docker.
Připojení kontejneru Docker MongoDB k Bash Shell
Právě jste nasadili kontejner Docker MongoDB, ale jak ho spravujete? Udělejte to připojením kontejneru Docker k prostředí Bash pomocí docker exec
nejprve příkaz.
Připojení vašeho kontejneru k shellu Bash je klíčové, protože kontejner aktuálně běží v odděleném režimu (běží na pozadí). A pokud kontejner běží na pozadí, kontejner nebude přijímat žádný vstup ani zobrazovat výstup.
Spusťte docker exec
příkaz níže pro připojení kontejneru (mymongo
) do prostředí Bash.
sudo docker exec -it mymongo bash
Po dokončení příkazu se vaše výzva změní na něco jako níže. Jedinečné alfanumerické číslo (77782fa95314 ) je ID kontejneru.
ID kontejnerů jsou nezbytná pro zamezení konfliktům názvů a efektivní identifikaci kontejnerů mezi hostiteli, proto se snažte je neměnit.
Nyní spusťte mongo
příkaz bez jakýchkoli argumentů pro přihlášení do prostředí MongoDB v kontejneru (mymongo). Shell MongoDB je místo, kde spouštíte své mongo dotazy/příkazy.
Jakmile jste v kontejneru, můžete spustit jakýkoli příkaz bez
sudo
prefix, protože nyní jste v kontejneru uživatel root. Každá změna, kterou provedete v kontejneru, neovlivní váš hostitelský systém.
mongo
Když se podíváte na výzvu zobrazenou níže, zjistíte, že se nyní nacházíte v prostředí MongoDB.
Pokud chcete vidět všechny dostupné příkazy v prostředí MongoDB, spusťte
help
příkaz, jak je uvedeno níže.
Vytvoření administrativního uživatele MongoDB
Poté, co jste nasadili server MongoDB do kontejneru Docker, nyní vytvoříte administrativního uživatele MongoDB. Administrativní uživatel vám umožní připojit se k serveru MongoDB a spravovat databáze.
1. Znovu se přihlaste do prostředí MongoDB a spusťte use
příkazem níže nejprve přepněte na admin
databáze. Administrativní uživatel tak získá správná oprávnění ke správě databází.
use admin
Chcete-li vytvořit administrativního uživatele, zkopírujte a vložte následující kód do výzvy MongoDB.
Níže uvedený kód používá db.createUser()
způsob vytvoření uživatele s administrativními rolemi. Uživatelské jméno (user
) a heslo (pwd
) níže jsou pevně zakódovány a můžete je změnit podle svých preferencí.
# Create an administrative user
db.createUser(
{
# Sets the username for the administrative user
user: "ata",
# Sets the password for the administrative user
pwd: "password123",
# Sets the roles for the administrative user
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
Pokud kód funguje, ve výzvě MongoDB se zobrazí zpráva podobná té níže.
3. Spusťte quit()
dotazem níže ukončíte prostředí MongoDB.
quit()
4. Nakonec spusťte následující mongo
příkaz k otestování administrativního uživatele, kterého jste vytvořili (ata
) připojením k serveru MongoDB. Po zobrazení výzvy zadejte heslo pro administrátora.
mongo -u ata -p --authenticationDatabase admin
Jak vidíte níže, server MongoDB vytiskne verzi serveru MongoDB, pokud se úspěšně připojíte k serveru.
Možná budete chtít administrátora dále otestovat. Pokud ano, spusťte níže uvedené příkazy a zobrazte všechny uživatele v databázi.
use admin
show users
Níže vidíte, že vámi vytvořený administrativní uživatel je v seznamu.
Vytvoření databáze MongoDB
Správa kontejneru Docker MongoDB by nebyla úplná bez vytvoření databáze. Vytvoříte novou databázi MongoDB, do které budete ukládat data prostřednictvím prostředí MongoDB.
1. V rámci interaktivní relace v kontejneru Docker spusťte show dbs
příkaz níže k zobrazení seznamu všech databází na vašem serveru.
show dbs
Níže můžete vidět administrátorskou databázi, konfigurační databázi a lokální databázi. Shell MongoDB vytváří tyto databáze ve výchozím nastavení na každém serveru MongoDB.
2. Dále spusťte use
příkaz níže k vytvoření nové databáze. Nahraďte <database_name>
s názvem databáze dle vašeho výběru. Ale pro tento příklad se databáze jmenuje linux
.
use
dotaz přepne aktuální databázi na tu, kterou určíte, pokud existuje. Pokud ne,use
dotaz vytvoří novou databázi a automaticky se do ní přepne.
use <database_name>
3. Znovu spusťte show dbs
stejně jako dříve (krok jedna), abyste zjistili, zda databáze, kterou jste vytvořili, existuje.
show dbs
Stále nevidíte nově vytvořenou databázi (linux) v seznamu? MongoDB vytvoří databázi pouze tehdy, když do ní uložíte data poprvé. Data mohou být ve formě sbírky nebo dokonce dokumentu.
4. Nyní zkopírujte/vložte níže uvedený kód do prostředí MongoDB a stiskněte Enter .
Níže uvedený kód vytvoří novou kolekci s názvem linux_version
, které můžete změnit na název, který preferujete. Kolekce obsahuje data ve formátu párů klíč:hodnota.
# Using insertOne method to insert data
db.linux_version.insertOne(
# Key:value pairs to insert to the database
{ "debian" : "11",
"ubuntu" : "20.04",
"rocky linux" : "8.4",
"alma linux" : "8"
}
)
Ve výstupu níže můžete vidět linux_version
kolekce je vytvořena a přichází s ObjectID .
5. Spusťte show collections
příkaz k zobrazení seznamu kolekcí a zjištění, zda nová kolekce linux_version
existuje.
show collections
Níže můžete vidět, že jste úspěšně vytvořili linux_version sbírka.
6. Nakonec spusťte níže uvedený příkaz a zobrazte a potvrďte data, která jste vložili do linux_version
sbírka je správná. Metoda pretty() vám umožňuje zobrazit data ve formátu čitelném pro člověka.
db.linux_version.find().pretty()
Pokud někdy upravíte data v databázi, použijte
Update()
metoda.
Níže můžete vidět výstup ve velmi čitelném formátu.
Restartování kontejneru Docker MongoDB
Nyní máte úspěšně spuštěný kontejner Docker MongoDB. Ale co když už pro nádobu nemáte žádné využití nebo co když nefunguje? Několik příkazů Dockeru může pomoci zastavit, restartovat a dokonce odstranit kontejner MongoDB Docker.
1. Spusťte docker ps
příkaz níže k zobrazení seznamu všech spuštěných kontejnerů.
sudo docker ps
Poznamenejte si název a ID kontejneru, který chcete zastavit, restartovat nebo odstranit, jak je znázorněno níže.
2. Dále spusťte buď docker stop
příkazy níže k zastavení běžícího kontejneru MongoDB.
sudo docker stop mymongo
sudo docker stop container-ID
3. Spusťte znovu docker ps
stejně jako dříve (krok jedna), abyste zkontrolovali, zda se kontejner vypnul.
sudo docker ps
Jak vidíte níže, kontejner není v seznamu spuštěných kontejnerů, což znamená, že jste kontejner úspěšně zastavili.
4. Nyní spusťte některý z docker start
příkazy níže, pokud se rozhodnete restartovat kontejner.
sudo docker start mymongo
sudo docker start container-ID
5. Nakonec znovu spusťte docker ps
příkaz, abyste zjistili, zda kontejner běží.
sudo docker ps
Možná nemáte další využití pro kontejner. Pokud ano, musíte nejprve zastavit kontejner a spustit
rm
příkaz k odstranění kontejneru, jako je tento:sudo docker container rm mongodb
. Podobně jako v předchozích příkladech nahraďtemongodb
s názvem kontejneru nebo ID kontejneru.
Závěr
V tomto tutoriálu jste se naučili, jak nasadit a spravovat kontejner Docker MongoDB vytvořením administrátora, který vytvoří databázi a uloží do ní data. Uvědomili jste si, že můžete zastavit, restartovat a odstranit kontejnery, které již nepotřebujete, aby byly vaše obrazy Docker čisté.
Nasazení a správa MongoDB pomocí Dockeru je prvním krokem k využití výhod technologie kontejnerizace a snížení režie. Proč nevyužít tento první krok k dalšímu prozkoumání MongoDB a zjistit, jak může kontejner Docker MongoDB pomoci s vašimi projekty?