MongoDB é um banco de dados de documentos popular e de código aberto que oferece alto desempenho e grande flexibilidade. Mas você já tentou containerizar um banco de dados MongoDB para seus projetos? Se não, então prepare-se para uma experiência incrível!
Neste tutorial, você aprenderá como implantar, proteger e gerenciar o MongoDB de maneira eficaz com o Docker. Portanto, continue lendo e torne-se o mestre em implantar contêineres Docker MongoDB!
Pré-requisitos
Este tutorial inclui demonstrações práticas. Para acompanhar, certifique-se de ter o seguinte:
- Uma máquina Ubuntu – Este tutorial utiliza Ubuntu 20.04 LTS
- A user with
sudo
permission - Docker – Este tutorial utiliza o Docker 20.10.9
Download da Imagem do Docker MongoDB
Antes de poder implantar e gerenciar um contêiner Docker MongoDB, você precisa primeiro baixar uma imagem do MongoDB do Docker Hub para poder executar o contêiner MongoDB localmente.
Execute o comando docker
abaixo para baixar a imagem da Edição Comunitária (CE) do MongoDB (pull mongo
), que está hospedada no Docker Hub. A versão mais recente desta imagem no momento da redação é 4.2.
Como você pode ver abaixo, o comando automaticamente baixa a versão mais recente da imagem e a marca como latest.

Agora execute o comando docker images
abaixo para listar todas as imagens disponíveis em seu servidor.
Abaixo, você pode ver a imagem do MongoDB marcada como latest.

Implantando um Contêiner Docker MongoDB
A partir da imagem MongoDB que você baixou, você pode agora implantar um contêiner MongoDB. Você inicializará seu contêiner MongoDB com o executável mongo, criará um diretório de dados. Em seguida, você definirá o mapeamento entre a área de dados do contêiner Docker e a máquina host.
1. Execute o comando mkdir
abaixo para criar um diretório de dados chamado mongodata
para armazenar o banco de dados e os logs do MongoDB.
2. Em seguida, execute o comando docker run
abaixo para criar um contêiner com o nome mymongo
. Além disso, o contêiner é iniciado com um pseudo-TTY interativo (-it
), caso a saída deva ser mostrada ao iniciar o contêiner.
Finalmente, o diretório recém-criado mongodata está vinculado (-v
) ao diretório interno, /data/db. A opção -d
inicia o contêiner no modo destacado, então ele é executado como um processo em segundo plano e retorna a saída do console após a criação.
O sistema cria automaticamente o diretório /data/db quando você executa o contêiner para armazenar os dados das alterações que você faz no contêiner. Este diretório funciona de forma semelhante ao modo somente leitura e permite o armazenamento persistente de dados no sistema hospedeiro.
Depois que o comando for concluído com êxito, você verá uma saída como a abaixo.

3. Finalmente, execute o comando docker ps
abaixo para identificar o ID do contêiner e verificar seu status. O comando docker ps
exibe todas as informações sobre o contêiner atualmente em execução.
O comando
docker ps
é comparável ao comando regularps
no Linux.
No output mostrado abaixo, você pode ver uma seção Portas que lista todas as portas atribuídas ao contêiner para ouvir conexões de entrada.
Português“`
No exemplo, a porta 27017 está mapeada para o host. A saída abaixo indica que você pode acessar a instância do MongoDB neste contêiner através de localhost:27017 a partir do host.

Talvez você queira ver o arquivo de log do contêiner
mymongo
para determinar o que aconteceu com seu banco de dados/instância do MongoDB quando algo deu errado. Se sim, execute o comandodocker logs
, assim:sudo docker logs docker-container
. Substituadocker-container
pelo nome do seu contêiner Docker.

Anexando o Contêiner Docker MongoDB ao Shell Bash
Você acabou de implantar um contêiner Docker MongoDB, mas como gerenciá-lo? Faça isso anexando o contêiner Docker ao shell Bash com o comando docker exec
primeiro.
Anexar seu contêiner ao shell Bash é crucial, pois o contêiner está atualmente em modo destacado (executando em segundo plano). E se o contêiner estiver em segundo plano, ele não receberá entrada nem exibirá saída.
Execute o comando docker exec
abaixo para anexar seu contêiner (mymongo
) ao shell Bash.
Quando o comando for concluído, seu prompt mudará para algo semelhante ao mostrado abaixo. O número alfanumérico exclusivo (77782fa95314) é o ID do contêiner.
Os IDs de container são essenciais para evitar conflitos de nomes e identificar efetivamente os containers entre hosts, então tente não alterá-los.

Agora execute o comando mongo
sem nenhum argumento para entrar no shell do MongoDB no container (mymongo). O shell do MongoDB é onde você executa suas consultas/comandos mongo.
Uma vez que você está no container, você pode executar qualquer comando sem o prefixo
sudo
, pois agora você é um usuário root dentro do container. Qualquer alteração que você faça no container não afetará seu sistema host.
Ao olhar para o prompt mostrado abaixo, você pode dizer que agora está no shell do MongoDB.

Se você prefere ver todos os comandos disponíveis no shell do MongoDB, execute o comando
help
, conforme mostrado abaixo.

Criando um Usuário Administrativo MongoDB
Depois de ter implantado um servidor MongoDB dentro de um container Docker, você agora criará um usuário administrativo MongoDB. Um usuário administrativo permite que você se conecte ao servidor MongoDB e gerencie os bancos de dados.
1. Faça login no shell do MongoDB novamente e execute o comando use
abaixo para primeiro mudar para o banco de dados admin
. Fazer isso fornece ao usuário administrativo as permissões corretas para gerenciar os bancos de dados.

Copie e cole o seguinte código no prompt do MongoDB para criar um usuário administrativo.
O código abaixo utiliza o método db.createUser()
para criar um usuário com funções administrativas. O nome de usuário (user
) e a senha (pwd
) abaixo estão codificados, e você pode alterá-los conforme preferir.
Se o código funcionar, você receberá uma mensagem semelhante à mostrada abaixo no prompt do MongoDB.

3. Execute a consulta quit()
abaixo para sair do shell do MongoDB.
4. Por fim, execute o seguinte comando mongo
para testar o usuário administrativo que você criou (ata
) conectando-se ao servidor MongoDB. Insira a senha do usuário administrativo quando solicitado.
Como você vê abaixo, o servidor MongoDB imprime a versão do servidor MongoDB se você se conectar com sucesso.

Talvez queira testar ainda mais o usuário administrativo. Se sim, execute os comandos abaixo para mostrar todos os usuários no banco de dados.
Abaixo, você pode ver que o usuário administrativo que você criou está na lista.

Criando um Banco de Dados MongoDB
Gerenciar um contêiner Docker MongoDB não estaria completo sem criar um banco de dados. Você criará um novo banco de dados MongoDB no qual armazenará dados via shell do MongoDB.
1. Dentro de uma sessão interativa no contêiner Docker, execute o comando show dbs
abaixo para listar todos os bancos de dados em seu servidor.
Abaixo, você pode ver um banco de dados admin, um banco de dados config e um banco de dados local. O shell do MongoDB cria esses bancos de dados por padrão em cada servidor MongoDB.

2. Em seguida, execute o comando use
abaixo para criar um novo banco de dados. Substitua <database_name>
pelo nome do banco de dados de sua escolha. Mas, para este exemplo, o banco de dados é chamado linux
.
A consulta
use
altera o banco de dados atual para o especificado, se existir. Caso contrário, a consultause
cria um novo banco de dados e muda automaticamente para ele.

3. Execute novamente o comando show dbs
como fez anteriormente (passo um) para ver se o banco de dados que você criou existe.
Ainda não vê o banco de dados recém-criado (linux) na lista? O MongoDB constrói o banco de dados apenas quando você armazena dados nele pela primeira vez. Os dados podem estar na forma de uma coleção ou mesmo de um documento.

4. Agora, copie/cole o código abaixo no shell do MongoDB e pressione Enter.
O código abaixo cria uma nova coleção chamada linux_version
, que você pode alterar para o nome que preferir. A coleção contém dados no formato de pares chave:valor.
No resultado abaixo, você pode ver que a coleção linux_version
foi criada e vem com um ObjectID.

5. Execute o comando show collections
para ver uma lista de coleções e verificar se a nova coleção linux_version
existe.
Você pode ver abaixo que você criou com sucesso a coleção linux_version.

6. Finalmente, execute o comando abaixo para visualizar e confirmar que os dados inseridos na coleção linux_version
estão corretos. O método pretty() permite visualizar os dados em um formato legível para humanos.
Se você modificar os dados no banco de dados, utilize o método
Update()
.
Você pode ver que a saída abaixo está em um formato muito mais legível.

Reiniciar o Contêiner Docker do MongoDB
Neste momento, você tem um contêiner Docker do MongoDB em execução com sucesso. Mas e se você não precisar mais do contêiner, ou se ele não estiver funcionando? Alguns comandos do Docker podem ajudar a parar, reiniciar e até remover um contêiner Docker do MongoDB.
1. Execute o comando docker ps
abaixo para listar todos os contêineres em execução.
Observe o nome e o ID do contêiner que deseja parar, reiniciar ou remover, conforme mostrado abaixo.

2. Em seguida, execute um dos comandos docker stop
abaixo para parar um contêiner MongoDB em execução.
3. Execute novamente o comando docker ps
, como fez anteriormente (passo um), para verificar se o contêiner foi desligado.
Como você pode ver abaixo, o contêiner não está na lista de contêineres em execução, o que indica que você parou o contêiner com sucesso.

4. Agora execute um dos comandos docker start
abaixo se decidir reiniciar um contêiner.
5. Por fim, execute novamente o comando docker ps
para verificar se o contêiner está em execução.
Talvez você não tenha mais utilidade para um contêiner. Se for o caso, você deve primeiro parar o contêiner e executar o comando
rm
para removê-lo, assim:sudo docker container rm mongodb
. Semelhante aos exemplos anteriores, substituamongodb
pelo nome ou ID do contêiner.
Conclusão
Neste tutorial, você aprendeu como implantar e gerenciar um contêiner MongoDB do Docker, criando um usuário administrador para criar um banco de dados e armazenar dados nele. Você percebeu que pode parar, reiniciar e remover contêineres que não precisa mais para manter suas imagens do Docker limpas.
Implantar e gerenciar o MongoDB com Docker é o primeiro passo para aproveitar a tecnologia de containerização e reduzir a sobrecarga. Por que não usar este primeiro passo para explorar MongoDB mais e ver como um contêiner MongoDB do Docker pode ajudar em seus projetos?