Volumes de dados do docker

objetivos

1. Cópia de arquivo entre o host Docker e o contêiner
2. Volume de
dados 3. Contêiner de volume de dados

Cópia de arquivo entre o host Docker e a cópia docker do contêiner

Prefácio:
Gerenciamento de dados do Docker
Ao usar o Docker em um ambiente de produção, muitas vezes é necessário persistir os dados ou
compartilhar dados entre vários contêineres , o que inevitavelmente envolve operações de gerenciamento de dados do contêiner

Existem duas maneiras principais de gerenciar dados em um contêiner:
Volumes de dados, onde os dados no contêiner são mapeados diretamente para o ambiente host local;
Contêineres de volume de dados (os contêineres de volume de dados usam contêineres específicos para manter volumes de dados).

Claro, existe o método de cópia mais primitivo, que também é um método de gerenciamento de dados, mas basicamente não é usado;

O método de cópia mais primitivo para gerenciar dados :
cópia do arquivo host para
o arquivo ou diretório que precisa ser copiado no contêiner docker cp Nome do contêiner: diretório do contêiner
Exemplo:
docker cp / zking / monitorlogs / db3: / xieminglu / software

Copiar para o host
docker cp no contêiner Nome do contêiner: Diretório do contêiner Diretório do host
Exemplo:
docker cp db3: /xieminglu/software/test.txt / zking

Volume de dados

Volumes de
dados Um volume de dados é um diretório especial que pode ser usado por um ou mais contêineres. Ele mapeia diretamente o diretório do sistema operacional do host para o contêiner.
Ele pode fornecer muitos recursos úteis:
1. Os volumes de dados podem estar entre contêineres Compartilhamento e reutilização
2. As modificações no volume de dados terão efeito imediatamente
3. As atualizações no volume de dados não afetarão o espelhamento
4. O volume de dados sempre existirá por padrão, mesmo se o contêiner for excluído

Operações relacionadas ao volume de dados
1. Criar volume de dados
docker volume create my-vol

 此时,数据卷默认会放到/var/lib/docker/volumes路径下,会发现所新建的数据卷位置,查看命令如下:
 ## 参数可以为数字“1”,字母L:大小写均可,但效果不一样 
 ls -1 /var/lib/docker/volumes

2. Ver todos os volumes de dados
docker volume ls

3. Visualize as informações detalhadas do volume de dados especificado (exiba os dados no formato JSON)
volume do docker inspecionar my-vol

4. Exclua um volume
docker volume rm my-vol

 注1:数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,
      并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷可能会占据很多空间,
      所以要及时删除

Monte o volume de dados, é melhor criar o contêiner inicial por meio de execução em vez de criar / iniciar. Depois que o
comando criar / iniciar cria o contêiner inicial, é muito difícil montar o volume de dados. Muitos arquivos de configuração precisam ser modificados, mas não é impossível.
5. Inicie uma montagem Carregar contêiner de volume de dados
## demo1
docker run -d
-it --name
mycentos03
--mount source = my-vol, target = / webapp
centos: 7

 注意:此行命令执行后的效果是,宿主机路径/var/lib/docker/volumes/my-vol/_data与mycentos03容器路径/webapp完成映射


 ## demo2
 docker run -d \
   -it \
   --name mycentos04\
   --mount type=bind,source=/xieminglu/data,target=/root/webapp02 \
   centos:7    

 注1:linux命令结尾加斜杠有什么用
      加了“\”意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行输入,直到读到结束符,如回车

 注2:source=my-vol,target=/webapp
      my-vol为要挂载的数据卷,如果数据卷不存在,docker会自动创建
      /webapp为容器上目录,如果目录不存在, Docke会自动创建

 注3:mount选项高级用法
      --mount选项的type参数支持三种类型的数据卷
      --mount标志:由多个名值对组成,逗号分隔,每个键值由 <key> = <value> 元组组成 
      1.type=volume普通数据卷(默认即这种类型),映射到主机/var/lib/docker/volumes路径下;
        --mount type=volume,source=my-vol,target=/webapp
        注:这是type的默认值
      2.bind:绑定数据卷,映射到主机指定路径下;
        --mount type=bind,source=/webapp,destination=/webapp2
      3.tmpfs :临时数据卷,只存在于内存中
        docker run -d \
          -it \
          --name tmptest \
          --mount type=tmpfs,destination=/app \
          nginx:latest

Recipiente de volume de dados

Contêiner de volume de dados
Se os usuários precisarem compartilhar alguns dados atualizados continuamente entre vários contêineres, a maneira mais fácil é usar um contêiner de volume de dados.
O contêiner de volume de dados também é um contêiner, mas sua finalidade é fornecer especificamente volumes de dados para outros contêineres montarem

Operações relacionadas ao contêiner de volume de dados
1. Crie um novo
docker de contêiner de volume de dados run -di --name db_data -v / db_data centos: 7
Nota: O caminho real de armazenamento dos dados compartilhados após -v

2. Use o contêiner db1 e db2 para testar se o contêiner de volume de dados está disponível
docker run -di --name db1 --volumes-from db_data centos: 7
docker exec -it db1 bash
cd db_data

docker run -di --name db2 --volumes-from db_data centos: 7
docker exec -it db2 bash
cd db_data

Basta criar um arquivo aaa.txt para ver o efeito

Efeito: No exemplo acima, db1 e db2 compartilham dados por meio de db_data
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/xieminglu/article/details/103552295
Recomendado
Clasificación