Caso você queira compartilhar uma pasta que não seja a pasta padrão utilizada pelo Docker Toolbox você precisará fazer algumas configurações extras.
Para utilizar o Docker Toolbox, o VirtualBox instala uma máquina virtual chamada default, que roda a distribuição boot2docker do Linux. Devido a essa camada adicional de virtualização, alguns passos adicionais são necessários para compartilhar arquivos entre o sistema operacional do host e o container do Docker.
Preparando o VirtualBox para Compartilhar Pastas
O primeiro passo é tonar a pasta desejada compartilhavel. Como exemplo vamos utilizar a pasta H:\docker. Ela precisa ser compartilhada com a máquina virtual do VirtualBox chamada default, antes de ser montada como um volume dentro de um container do Docker. Isto pode ser feito de algumas formas diferentes mas segue os passos da solução apresentada neste post:
- Abra o “Docker Quickstart Terminal”.
- Com o Docker rodando, digite
docker-machine stop default. - Abra o Prompt de Comando do menu Iniciar (procure por cmd.exe).
- Navegue até a pasta do VirtualBox usando
cd C:/Program Files/Oracle/VirtualBox - Digite
VBoxManage.exe sharedfolder add default --name "h/docker" --hostpath "\\?\h:\docker" --automount - Digite
VBoxManage.exe setextradata default VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root 1 - Digite
VBoxManage.exe setextradata default VBoxInternal2/SharedFoldersEnableSymlinksCreate/h/docker 1
Os passos acima irão preparar o VirtualBox para compartilhas a pasta H:\docker. Agora é necessário montar a pasta dentro da máquina virtual do Docker:
- Abra o “Docker Quickstart Terminal”.
- Com o Docker rodando, digite
docker-machine ssh default - Digite
sudo mkdir --parents /h/docker - Digite
sudo mount -t vboxsf h/work /h/docker/ - Digite
exit
Agora você pode criar instâncias de container do Docker e compartilhar a pasta H:\docker como um volume montado. Veja o exemplo utilizando jupyter/scipy-notebook
Compartilhando uma Pasta com um Container Docker
Para criar um container Docker a partir da imagem jupyter/scipy-notebook, digite o comando a seguir e espere até ele ser competado: docker run --name="scipy" --user root -v /h/docker:/home/jovyan -d -e GRANT_SUDO=yes -p 8888:8888 jupyter/scipy-notebook start-notebook.sh --NotebookApp.token=''
Isto pode levar algum tempo, pois será necessário fazer o download e extrair a imagem. Quando terminar, você poderá acessar o notebook do Jupyter acessando 127.0.0.1:8888.
