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
.