Volumes em Docker

Os volumes separam os arquivos de dados que são gerados por um aplicativo ou banco de dados do restante do armazenamento do contêiner. Eles permitem que os dados importantes existam foram do contêiner, o que significa que você pode substituir um contêiner sem perder os dados que ele criou. Eles tornam possível excluir um contêiner sem também excluir os dados que contém, o que permite que os contêiners sejam alterados ou atualizados sem perder os dados e informações armazenadas. Seus principais usos são: Manter os dados quando um contêiner for removido Para compartilhar dados entre o sistema de arquivo de host e o contêner do Docker Para compartilhar dados com outros contêiners do Docker Praticando com volumes Para criar um volume: docker volume create meu_volume Executar um contêiner com um volume docker run -d --name meu_container -v meu_volume:/app/data nginx Opção Descrição docker run Executa um novo contêiner. -d Executa o contêiner em modo desacoplado (background). --name meu_container Dá o nome meu_container ao contêiner. -v meu_volume:/app/data Monta o volume meu_volume dentro do contêiner no caminho /app/data. nginx Usa a imagem do Nginx como base para o contêiner. Criando volumes: DataBase MySQL Vamos criar um repositório de volumes de dados chamado dadosdb docker volume create dadosdb para verificar podemos utilizar docker volume ls A partir da criação desse volume, temos que referencia-lo a um container existente criado a partir do MySql. docker image pull mysql:5.7 Após criar a imagem, podemos inspecionar com o comando docker image inspect mysql:5.7 Na saída deste comando, vemos as seção Volumes que indica que esta imagem usa o volume para o diretório var/lib/mysql que é o local onde o MySQL armazena os seus arquivos de dados. agroa vamos criar um container a partir da imagem: docker run -d --name mysql -v dadosdb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=numsey mysql:5.7 -v dadosdb:/var/lib/mysql Esse volume faz com que os dados do banco fiquem persistentes, ou seja, se o contêiner for excluído e um novo for criado, os dados permanecerão salvos dentro do volume dadosdb. dadosdb: Nome do volume Docker onde os dados do MySQL serão armazenados. /var/lib/mysql : Diretório dentro do contêiner onde o MySQL armazena seus arquivos de banco de dados. Se o -v não fosse usado, os dados seriam apagados toda vez que o contêiner fosse removido. Monta um volume para armazenar os dados do banco (explicação detalhada abaixo). -e MYSQL_ROOT_PASSWORD=numsey Define a variável de ambiente MYSQL_ROOT_PASSWORD, que configura a senha do usuário root do MySQL como numsey. Adicionando novo banco de dados Use o comando abaixo para abrir um terminal dentro do contêiner MySQL: docker exec -it mysql bash Depois de estar dentro do contêiner, execute o seguinte comando para acessar o MySQL: mysql -u root -p u root → Especifica o usuário root. p → Solicita a senha (digite numsey quando for solicitado). Criando um novo banco de dados CREATE DATABASE meubanco; Verificar se o banco foi criado CREATE DATABASE meubanco; Sair do MySQLE do contêiner EXIT; exit Removendo container O ponto agora será remover o container. Em teoria todos os dados deveriam ser apagados, já que removemos o container, correto? Porém ao criar o volume e mapaear a tags vamos fazer essa preservação de dados. Resolvemos que vamos remover o container docker rm mysql Vamos agora criar um outro contêiner, mas com outro nome docker run -d --name macmysql -v dadosdb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=numsey mysql:5.7 ao executar todos os passos a cima novamente para acessar o banco de dados, podemos ver que agora temos já cadastrado o banco “meubanco” em nosso container.

Mar 2, 2025 - 23:49
 0
Volumes em Docker

Os volumes separam os arquivos de dados que são gerados por um aplicativo ou banco de dados do restante do armazenamento do contêiner. Eles permitem que os dados importantes existam foram do contêiner, o que significa que você pode substituir um contêiner sem perder os dados que ele criou.

Eles tornam possível excluir um contêiner sem também excluir os dados que contém, o que permite que os contêiners sejam alterados ou atualizados sem perder os dados e informações armazenadas.

Seus principais usos são:

  1. Manter os dados quando um contêiner for removido
  2. Para compartilhar dados entre o sistema de arquivo de host e o contêner do Docker
  3. Para compartilhar dados com outros contêiners do Docker

Image description

Praticando com volumes

Para criar um volume:

docker volume create meu_volume

Executar um contêiner com um volume

docker run -d --name meu_container -v meu_volume:/app/data nginx
Opção Descrição
docker run Executa um novo contêiner.
-d Executa o contêiner em modo desacoplado (background).
--name meu_container Dá o nome meu_container ao contêiner.
-v meu_volume:/app/data Monta o volume meu_volume dentro do contêiner no caminho /app/data.
nginx Usa a imagem do Nginx como base para o contêiner.

Criando volumes: DataBase MySQL

Vamos criar um repositório de volumes de dados chamado dadosdb

docker volume create dadosdb

para verificar podemos utilizar

docker volume ls 

A partir da criação desse volume, temos que referencia-lo a um container existente criado a partir do MySql.

docker image pull mysql:5.7

Após criar a imagem, podemos inspecionar com o comando

docker image inspect mysql:5.7

Na saída deste comando, vemos as seção Volumes que indica que esta imagem usa o volume para o diretório var/lib/mysql que é o local onde o MySQL armazena os seus arquivos de dados.

agroa vamos criar um container a partir da imagem:

docker run -d --name mysql -v dadosdb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=numsey mysql:5.7

-v dadosdb:/var/lib/mysql

Esse volume faz com que os dados do banco fiquem persistentes, ou seja, se o contêiner for excluído e um novo for criado, os dados permanecerão salvos dentro do volume dadosdb.

dadosdb: Nome do volume Docker onde os dados do MySQL serão armazenados.

/var/lib/mysql : Diretório dentro do contêiner onde o MySQL armazena seus arquivos de banco de dados.

Se o -v não fosse usado, os dados seriam apagados toda vez que o contêiner fosse removido.

  • Monta um volume para armazenar os dados do banco (explicação detalhada abaixo).

-e MYSQL_ROOT_PASSWORD=numsey

  • Define a variável de ambiente MYSQL_ROOT_PASSWORD, que configura a senha do usuário root do MySQL como numsey.

Adicionando novo banco de dados

Use o comando abaixo para abrir um terminal dentro do contêiner MySQL:

docker exec -it mysql bash

Depois de estar dentro do contêiner, execute o seguinte comando para acessar o MySQL:

mysql -u root -p
  • u root → Especifica o usuário root.
  • p → Solicita a senha (digite numsey quando for solicitado).

Criando um novo banco de dados

CREATE DATABASE meubanco;

Verificar se o banco foi criado

CREATE DATABASE meubanco;

Sair do MySQLE do contêiner

EXIT;
exit

Removendo container

O ponto agora será remover o container. Em teoria todos os dados deveriam ser apagados, já que removemos o container, correto? Porém ao criar o volume e mapaear a tags vamos fazer essa preservação de dados.

Resolvemos que vamos remover o container

docker rm mysql

Vamos agora criar um outro contêiner, mas com outro nome

docker run -d --name macmysql -v dadosdb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=numsey mysql:5.7

ao executar todos os passos a cima novamente para acessar o banco de dados, podemos ver que agora temos já cadastrado o banco “meubanco” em nosso container.