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 /appEntã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 /srcNa 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 CDVocê 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: