Monte um diretório de host como um volume de dados
Além de criar um volume usando o sinalizador -v, você também pode montar um diretório do host do daemon do Docker em um contêiner.
$ docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
Este comando monta o diretório do host, / src / webapp, no container em / opt / webapp. Se o caminho / opt / webapp já existir dentro da imagem do contêiner, a montagem / src / webapp será sobreposta, mas não removerá o conteúdo pré-existente. Depois que a montagem é removida, o conteúdo fica acessível novamente. Isso é consistente com o comportamento esperado do comando mount.
O container-dir deve ser sempre um caminho absoluto, como / src / docs. O diretório host pode ser um caminho absoluto ou um valor de nome. Se você fornecer um caminho absoluto para o dir do host, o binder do Docker é montado no caminho especificado. Se você fornecer um nome, o Docker cria um volume nomeado com esse nome.
Um valor de nome deve começar com um caractere alfanumérico, seguido de a-z0-9, _ (sublinhado). (ponto final) ou - (hífen). Um caminho absoluto começa com / (barra).
Por exemplo, você pode especificar / foo ou foo para um valor de host-dir. Se você fornecer o valor / foo, o Docker cria uma montagem de ligação. Se você fornecer a especificação foo, o Docker cria um volume nomeado.
Se você estiver usando o Docker Machine no Mac ou Windows, o daemon do Docker tem acesso limitado ao sistema de arquivos do OS X ou Windows. O Docker Machine tenta compartilhar automaticamente seu diretório / Users (OS X) ou C: \ Users (Windows). Então, você pode montar arquivos ou diretórios no OS X usando.
docker run -v /Users/<path>:/<container path> ...
No Windows, monte diretórios usando:
docker run -v /c/Users/<path>:/<container path> ...'
Todos os outros caminhos vêm do sistema de arquivos da sua máquina virtual. Por exemplo, se você estiver usando o VirtualBox alguma outra pasta disponível para compartilhamento, você precisa fazer um trabalho adicional. No caso do VirtualBox, você precisa disponibilizar a pasta do host como uma pasta compartilhada no VirtualBox. Em seguida, você pode montá-lo usando o sinalizador Docker -v.
Montar um diretório de host pode ser útil para testes. Por exemplo, você pode montar o código-fonte dentro de um contêiner. Em seguida, altere o código-fonte e veja seu efeito no aplicativo em tempo real. O diretório no host deve ser especificado como um caminho absoluto e, se o diretório não existir, o Docker o criará automaticamente para você. Esta criação automática do caminho do host foi descontinuada.
Os volumes do Docker padrão são montados no modo de leitura / gravação, mas você também pode configurá-lo para ser montado somente leitura.
$ docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
Aqui montamos o mesmo diretório / src / webapp, mas adicionamos a opção ro para especificar que a montagem deve ser somente leitura.
Devido a limitações na função de montagem, a movimentação de subdiretórios no diretório de origem do host pode fornecer acesso do contêiner ao sistema de arquivos do host. Isso requer um usuário mal-intencionado com acesso ao host e ao seu diretório montado.
Note: The host directory is, by its nature, host-dependent. For this reason, you can’t mount a host directory from Dockerfile because built images should be portable. A host directory wouldn’t be available on all potential hosts.