O 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 você está prestes a se surpreender!
Neste tutorial, você aprenderá como implantar, proteger e gerenciar o MongoDB de forma eficaz com o Docker. Portanto, continue lendo e torne-se o mestre de 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 usa Ubuntu 20.04 LTS
- A user with
sudo
permission - Docker – Este tutorial usa Docker 20.10.9
Baixando a Imagem do Docker MongoDB
Antes de poder implantar e gerenciar um contêiner Docker MongoDB, você primeiro precisa 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á sendo hospedada pelo Docker Hub. A versão mais recente desta imagem no momento da escrita é 4.2.
Como você pode ver abaixo, o comando automaticamente baixa a versão mais recente da imagem e a etiqueta como latest.

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

Implantando um Contêiner MongoDB Docker
A partir da imagem do MongoDB que você baixou, agora você pode implantar um contêiner MongoDB. Você inicializará seu contêiner MongoDB com o executável mongo, criará um diretório de dados. Em seguida, 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 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 é executado de forma semelhante ao modo somente leitura e permite o armazenamento persistente de dados no sistema hospedeiro.
Assim que o comando for concluído com êxito, você verá uma saída como a abaixo.

3. Por fim, 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 resultado mostrado abaixo, você pode ver uma seção Portas que lista todas as portas atribuídas ao contêiner para escutar conexões de entrada.
Neste 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 do host.

Talvez você queira ver o arquivo de log do contêiner
mymongo
para determinar o que aconteceu no seu banco de dados/instância do mongo quando algo deu errado com ele. Se for o caso, execute o comandodocker logs
, como este: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 você o gerencia? 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 parecido com o abaixo. O número alfanumérico único (77782fa95314) é o ID do contêiner.
IDs de contêiner são essenciais para evitar conflitos de nomes e identificar efetivamente os contêineres entre os hosts, portanto, tente não alterá-los.

Agora execute o comando mongo
sem nenhum argumento para fazer login no shell do MongoDB no contêiner (mymongo). O shell do MongoDB é onde você executa suas consultas/comandos mongo.
Uma vez dentro do contêiner, você pode executar qualquer comando sem o prefixo
sudo
, pois agora é um usuário root dentro do contêiner. Toda alteração que você fizer no contêiner não afetará seu sistema host.
Ao observar o prompt mostrado abaixo, você pode perceber que agora está no shell do MongoDB.

Se preferir 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 implantar um servidor MongoDB dentro de um contêiner Docker, você agora criará um usuário administrativo MongoDB. Um usuário administrativo permite que você se conecte ao servidor MongoDB e gerencie bancos de dados.
1. Faça login novamente no shell do MongoDB e execute o comando use
abaixo para primeiro alternar para o banco de dados admin
. Fazê-lo fornece ao usuário administrativo as permissões corretas para gerenciar os bancos de dados.

Copie e cole o código a seguir 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 senha (pwd
) abaixo estão codificados, mas você pode alterá-los conforme preferir.
Se o código funcionar, você receberá uma mensagem semelhante à 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 do MongoDB. Insira a senha do usuário administrativo quando solicitado.
Como você pode ver abaixo, o servidor MongoDB imprime a versão do servidor MongoDB se você se conectar ao servidor com sucesso.

Talvez você queira testar ainda mais o usuário administrativo. Se for o caso, 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ê vai criar um novo banco de dados MongoDB no qual irá armazenar dados através do shell do MongoDB.
1. Dentro de uma sessão interativa dentro do 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 <nome_do_banco_de_dados>
pelo nome do banco de dados de sua escolha. Mas para este exemplo, o banco de dados é chamado de linux
.
A consulta
use
altera o banco de dados atual para o especificado se ele 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 você 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 até 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. Por fim, execute o comando abaixo para visualizar e confirmar os dados que você inseriu 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.

Reiniciando o Contêiner Docker MongoDB
Neste ponto, você tem um contêiner Docker 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é mesmo remover um contêiner Docker 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 você 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ê o parou 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 ver se o contêiner está em execução.
Talvez você não tenha mais uso para um contêiner. Se for o caso, você deve primeiro parar o contêiner e depois executar o comando
rm
para removê-lo, assim:sudo docker container rm mongodb
. Similar aos exemplos anteriores, substituamongodb
pelo nome ou ID do contêiner.
Conclusão
Neste tutorial, você aprendeu como implantar e gerenciar um contêiner Docker MongoDB, 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 Docker limpas.
Implantar e gerenciar o MongoDB com Docker é o primeiro passo para aproveitar a tecnologia de contêineres e reduzir os custos. Por que não usar este primeiro passo para explorar mais o MongoDB e ver como um contêiner Docker MongoDB pode ajudar em seus projetos?