Eu não sei sobre 'facilmente', e requer a execução do container como um usuário diferente de root (o que você provavelmente deve fazer de qualquer maneira).
Mas aqui está um exemplo, executando o Docker 1.9
Meu Dockerfile é parecido com isto:
FROM ubuntu:14.04
# Setup user environment
RUN useradd -d /home/dtest -m dtest
# Create a shared data volume
RUN mkdir /var/shared/
RUN chown -R dtest:dtest /var/shared
VOLUME /var/shared
WORKDIR /home/dtest
# Link in shared parts to the home directory
RUN ln -s /var/shared /home/dtest/shared
RUN chown -R dtest: /home/dtest
USER dtest
CMD /bin/bash
Depois de criar minha imagem, vamos chamá-la de dtest/test
, eu corro assim:
$ docker run --rm -v $(pwd):/var/shared/ -it dtest/test bash
# on the container:
dtest@33b5a1ee6c62:~$ ls -l
total 0
lrwxrwxrwx 1 dtest dtest 11 Nov 24 20:47 shared -> /var/shared
dtest@33b5a1ee6c62:~$ ls -l shared/
total 4
-rw-r--r-- 1 dtest staff 642 Nov 24 20:47 Dockerfile
dtest@33b5a1ee6c62:~$ echo "Test" > /var/shared/foo
dtest@33b5a1ee6c62:~$ ls -l $(pwd)/shared/
total 8
-rw-r--r-- 1 dtest staff 642 Nov 24 20:47 Dockerfile
-rw-r--r-- 1 dtest staff 5 Nov 24 20:52 foo
# on the OSX host
$ ls -l
total 16
-rw-r--r-- 1 dtest staff 642 Nov 24 15:47 Dockerfile
-rw-r--r-- 1 dtest staff 5 Nov 24 15:52 foo
Isso funcionou no Docker 1.8.x também, embora eu tenha que adicionar um arquivo vazio em / var / shared antes de adicioná-lo como VOLUME
:
# Create a shared data volume
# We need to create an empty file, otherwise the volume will
# belong to root.
# This is probably a Docker bug.
RUN mkdir /var/shared/
RUN touch /var/shared/placeholder
RUN chown -R dtest:dtest /var/shared
VOLUME /var/shared
O crédito para este método vai para este post de blog sobre a dica de criar um devbox.