GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak nasadit a spravovat Docker MongoDB kontejner

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ým ps 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ťte docker logs příkaz, jako je tento:sudo docker logs docker-container . Nahraďte docker-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ďte mongodb 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?


Docker
  1. Jak nasadit PostgreSQL jako Docker Container

  2. Jak vytvořit Docker Image z kontejneru a Dockerfile

  3. Jak zálohovat a obnovovat kontejnery Docker

  1. Jak nasadit kontejner nginx s Dockerem na Linode

  2. Jak nainstalovat Docker a nasadit LAMP Stack

  3. Jak pozastavit a obnovit kontejnery Docker

  1. Jak nasadit PostgreSQL na Docker Container

  2. Jak nasadit a spustit Redis v Dockeru

  3. Co je kontejner a jak to souvisí s Dockerem a Kubernetes?