Armazenar e compartilhar com volumes do Docker

Armazenar e compartilhar com volumes do Docker
No Docker, você pode escrever dados sobre a camada gravável. Mas os dados não persistem depois que um contêiner é desligado. Além disso, não é fácil mover os dados de um contêiner para outro. Naturalmente, às vezes é necessário armazenamento e compartilhamento de dados entre os serviços.

Docker tem três tipos de montagens de dados que podem ajudar - volumes, montagens de ligação e tmpfs. Os volumes armazenam dados no sistema de arquivos do host, mas são gerenciados pelo Docker. As montagens de ligação ajudam a armazenar dados em qualquer lugar do sistema host e os usuários podem modificar diretamente os arquivos dos próprios processos do host. As montagens TMPFs são armazenadas apenas na memória do host. Os volumes do Docker são a melhor opção porque são os mais seguros de usar.

Como usar o Docker Volumes

Vamos experimentar um exemplo prático. Vamos criar alguns recipientes do Ubuntu que compartilham o mesmo volume.

Primeiro, queremos criar o volume com o seguinte comando:

$ Docker Volume Crie My-Common-Vol

Agora podemos verificar se o volume existe:

$ docker volume ls
Nome do volume do driver
Local My-Common-Vol

Podemos inspecionar ainda mais o volume para verificar suas propriedades:

$ Docker Volume Inspecione o My-Common-Vol
[[

"CreatedAt": "2018-04-06T07: 43: 02Z",
"Driver": "Local",
"Rótulos": ,
"MountPoint": "/var/lib/docker/volumes/my-common-vol/_data",
"Nome": "My-Common-Vol",
"Opções": ,
"Escopo": "Local"

]

É importante lembrar que o MountPoint está realmente dentro da VM em que o Docker está funcionando. Então, não é diretamente acessível.

Agora vamos começar nosso primeiro servidor com o meu common-vol.

(Nota para o comando Docker Run, você pode usar as opções -mount e -v para montar um volume. A sintaxe dos dois é diferente. Usaremos a opção mais recente -como é a mais recente.)

$ Docker Run-Nome Server1-Mount Source = My-Common-Vol, Target =/App -it Ubuntu

Estamos montando a pasta My-Common-Vol para /App no ​​servidor1 Docker Container. O comando acima deve fazer o login no servidor Ubuntu1. Na linha de comando, vá para a pasta /app e crie um arquivo:

raiz@1312ea074055: /# cd /app
raiz@1312ea074055:/app# ls
raiz@1312ea074055:/app# toque criado no server1.TXT
raiz@1312ea074055:/app# ls
criado no server1.TXT

Então, temos o arquivo criado no server1.txt na pasta /app.

Vamos criar um segundo servidor e montar o mesmo volume meu-common-volume para ele:

$ Docker Run-Nome Server2-Mount Source = My-Common-Vol, Target =/Src -it Ubuntu

Agora, podemos ir para a pasta /src no Server2, verifique se há arquivos server1 e criar um novo arquivo:

raiz@77cd51945461: /# cd /src
raiz@77cd51945461:/src# ls
criado no server1.TXT
raiz@77cd51945461:/src# toque criado no server2.TXT
raiz@77cd51945461:/src# ls -1
criado no server1.TXT
criado no server2.TXT

Na pasta /src, vemos que criou-se-server1.txt já existe. Adicionamos criada no server2.TXT. Podemos verificar novamente no Server1 e ver que criou-se-server2.txt aparece.

Vamos iniciar um novo servidor de contêineres3 que só terá acesso somente leitura ao volume My-Common-Vol:

$ Docker Run-Nome Server3-Mount Source = My-Common-Vol, Target =/Test, Readonly -it Ubuntu

Então, criamos o servidor3 com o meu common-vol montado para /teste.

Vamos tentar escrever algo em /test:

raiz@a6620da1eea1:/# teste de CD
raiz@a6620da1eea1:/teste# ls -1
criado no server1.TXT
criado no server2.TXT
root@a6620da1eea1:/teste# toque criado no server3.TXT
Touch: Não é possível tocar 'criado no server3.txt ': sistema de arquivos somente leitura

Você pode ver que não podemos escrever para o meu common-vol a partir do servidor3.

Você pode excluir volumes. Mas você precisa remover todos os recipientes associados antes de tentar. Caso contrário, você receberá um erro como este:

$ Docker Volume RM My-Common-Vol
Resposta de erro do Daemon: Incapaz de remover o volume: Remova meu volume-volume:
O volume está em uso - [1312EA07405528BC65736F56692C06F04280779FD283A81F59F8477F28AE35BA,
77CD51945461FA03F572EA6830A98A16ECE47B4F840C2EDFC2955C7C9A6D69D2,
A6620DA1EEA1A39D64F3ACDF82B6D70309EE2F8D1F2C6B5D9C98252D5792EA59]

No nosso caso, podemos remover os recipientes e o volume como este:

$ Docker Container RM Server1
$ Docker Container RM Server2
$ Docker Container RM Server3
$ Docker Volume RM My-Common-Vol

Além disso, se você quiser montar vários volumes, a opção -Mount "Docker Run" -também permite que isso.

Um estudo mais aprofundado:

  • https: // docs.Docker.com/armazenamento/
  • https: // docs.Docker.com/armazenamento/volumes/
  • https: // docs.Docker.com/armazenamento/montagem de ligação/
  • https: // docs.Docker.com/armazenamento/tmpfs/
  • https: // www.Digitalocean.com/comunidade/tutoriais/instruções de como serem share-bet-bet-docker-containers