Docker (5) --- volume de dados

Insira a descrição da imagem aqui

Anterior: Docker (4) - Espelho

1. Como garantir a persistência dos dados?

  Aqui, devemos saber que a tecnologia docker é usar o arquivo de imagem baixado para gerar um contêiner de instância em execução, o que significa que o arquivo de imagem é equivalente a um modelo, como o arquivo de imagem do mysql, não importa quantas vezes o mysql seja executado no docker, o uso é sempre Faça o download do mesmo arquivo de imagem mysql. Como salvar os dados gerados durante minha operação? E se eu quiser usar os dados gerados durante a primeira execução durante a segunda execução?

  No Docker, os volumes de dados fornecem persistência de dados. O volume de dados aparece como um diretório ou arquivo em um ou mais contêineres e é montado no contêiner por janela de encaixe, mas não faz parte do sistema de arquivos conjunto, portanto, quando a janela de encaixe fecha ou exclui o contêiner, isso não afetará Os dados no volume de dados. Os volumes de dados podem ser usados ​​para armazenar dados e também para compartilhar dados entre contêineres.

2. Instrução de palavras reservadas no Dockerfile

Instrução Descrição do produto
DE A imagem base, com base em qual imagem a nova imagem se baseia
MANUTENÇÃO Nome e endereço de email do mantenedor de espelho
CORRE Comandos a serem executados quando o contêiner é construído
EXPOR Porta exposta pelo contêiner atual
WORKDIR Especifique o diretório em que o terminal efetua login para funcionar por padrão depois de criar o contêiner, uma base de apoio
ENV Usado para definir variáveis ​​de ambiente durante a criação da imagem
ADICIONAR Copie os arquivos no diretório host para a imagem e o comando ADD processará automaticamente a URL e descompactará o arquivo tar
CÓPIA DE Semelhante ao ADD, copie arquivos e diretórios para o espelho. Copie os arquivos / diretórios do <caminho da origem> no diretório do contexto de construção para o local do <caminho do destino> no espelho da nova camada {COPY src dest}
VOLUME Volume de dados do contêiner para armazenamento e persistência de dados
CMD Especifique um comando para executar quando o contêiner for iniciado. Pode haver várias instruções de CMD no Dockerfile, mas apenas a última entra em vigor, e o CMD será substituído pelos parâmetros após a execução da janela de encaixe.
PONTO DE ENTRADA Especifique um comando para executar quando o contêiner for iniciado. O objetivo do ENTRYPOINT é o mesmo do CMD, que é especificar o programa e os parâmetros de inicialização do contêiner.
ONBUILD Ao criar um Dockerfile herdado, execute o comando e o onbuild da imagem pai é acionado após a herança da imagem filho.

3. Características do volume de dados?

  • Os volumes de dados podem ser compartilhados ou reutilizados entre contêineres
  • Alterações no volume de dados não serão incluídas na atualização do contêiner
  • Alterações no volume de dados podem entrar em vigor diretamente
  • O ciclo de vida do volume de dados continua até que nenhum contêiner o use

3. Para obter o compartilhamento de dados entre a máquina host e o contêiner?

  Dois conceitos precisam ser esclarecidos aqui:
1. Máquina host: a
  máquina host refere VMWare-----》CentOs- se ao sistema Linux em que entramos no caminho é a nossa máquina host.
2. O contêiner
  é a instância em execução gerada pelo arquivo de imagem puxado na máquina host ~

Requisitos:
  Agora tenho uma imagem centos, espero que, quando a imagem centos estiver em execução, seucontainerdatadiretório e osmydatadois diretóriosdo hostpossam compartilhar dados;

Comando:
  docker run -it -v 宿主机中的共享目录(mydata)路径:容器中的共享目录(containerdata)的路径 Nome do Contêiner

Exemplo: por
  exemplo, meusdados estão no diretório raiz da máquina host (/mydata) e os dadosdestinados estão no diretório raiz do container (/containerdata)

A figura a seguir é o diretório raiz da máquina host e não há mydatapasta agora.A
Insira a descrição da imagem aqui
figura a seguir é o diretório raiz dos centos do contêiner e não há containerdatapasta
Insira a descrição da imagem aqui
agora.Primeiro, vincule o diretório:

docker run -it -v /mydata:/containerdata centos

2. Visualize o relacionamento de ligação entre o host e o contêiner

docker inspect 容器ID

Insira a descrição da imagem aqui
3. Verifique o navio de acolhimento e se houve mydatae containerdatapastas

Anfitrião:
Insira a descrição da imagem aqui
Contêiner:
Insira a descrição da imagem aqui
Agora mydatacrie um documento no diretório:

[root@bogon mydata]# touch file.txt
[root@bogon mydata]# ll
总用量 0
-rw-r--r--. 1 root root 0 3月  22 14:57 file.txt
[root@bogon mydata]# 

Agora que o mydatadiretório e o containerdatadiretório no contêiner centos compartilham dados, agora containerdatadeve haver um file.txtdocumento no diretório Ver containerdatacatálogo:

[root@7453e78d6615 /]# cd containerdata/
[root@7453e78d6615 containerdata]# ls -l
total 0
-rw-r--r--. 1 root root 0 Mar 22 06:57 file.txt
[root@7453e78d6615 containerdata]# 

Constatou que containerdataexiste um file.txtdocumento no diretório , agora edite o documento através do contêiner:
Insira a descrição da imagem aqui
insira um parágrafo no documento, de acordo com o princípio do compartilhamento de dados, também deve haver uma frase mydatano file.txtdocumento no diretório do host :
Insira a descrição da imagem aqui
verifique o coletor novamente neste momento containerdataSob o host file.txt:
Insira a descrição da imagem aqui
Aqui você conseguiu o compartilhamento de dados entre o host e o contêiner ~

Nota:

  Após a operação de ligação acima, mesmo que nosso contêiner esteja fechado e em execução, se mydataexecutarmos a operação no diretório da máquina host, ele ainda será sincronizado com centoso containerdatadiretório na imagem vinculada a ele :

Exemplos:

  Feche os centos e saia: `

Insira a descrição da imagem aqui
visualizar arquivos de imagem em execução no momento:
Insira a descrição da imagem aqui
para confirmar a acima centos imagens já sair correndo -
desta vez no hospedeiro mydatacriar um diretório file001.txtde arquivos e adicionar conteúdo: this content is edited in the host
Insira a descrição da imagem aqui
este arquivo de imagem centos tempo de execução para o containerdatadiretório Ver:
Ver ID da imagem do CentOS do segundo fechamento: docker ps -l
Insira a descrição da imagem aqui
Reinicie o arquivo de imagem do centos que foi fechado pela última vez:docker start 镜像ID

Insira a descrição da imagem aqui

Digite o contêiner centos em execução: docker anexar ID da imagem para
Insira a descrição da imagem aqui
ver containerdatase há novos file001.txtdocumentos no diretório :

[root@e2fde7599c8b /]# cd containerdata/
[root@e2fde7599c8b containerdata]# ls -l
total 8
-rw-r--r--. 1 root root 38 Mar 22 07:22 file.txt
-rw-r--r--. 1 root root 35 Mar 22 07:13 file001.txt
[root@e2fde7599c8b containerdata]# cat file001.txt 

this content is edited in the host

[root@e2fde7599c8b containerdata]# 

Verificou-se que o file001.txtdocumento e os dados recém-criados na máquina host estão sincronizados com a centosposição de ligação correspondente do contêiner;

4. Adicione permissões ao compartilhar dados entre host e contêiner

Comando de ligação de diretório para compartilhamento de dados entre host e contêiner:

docker run -it -v /宿主机共享文件的绝对路径:/容器共享文件的绝对路径 :ro 镜像名

Nota: ro é somente leitura (permissão somente leitura)

Após vincular o diretório de dados compartilhados através do comando acima, podemos gravar dados (adicionar, excluir, modificar) da máquina host e o contêiner pode apenas ler dados

Publicado 117 artigos originais · Gosto 57 · Visitantes: 10.000 ou mais

Acho que você gosta

Origin blog.csdn.net/qq_43655835/article/details/104944691
Recomendado
Clasificación