Qual é o objetivo da instrução VOLUME em um Dockerfile?

0

Na documentação, diz que a instrução VOLUME cria um ponto de montagem, mas eu criei uma imagem usando:

FROM alpine
RUN mkdir /myvol
RUN echo "hello world" > /myvol/greeting

e consegui mount /myvol ou qualquer outro caminho no sistema de arquivos de contêineres usando docker run -v vol:/myvol myimage e consegui ver os dados em /var/lib/docker/vol/_data na máquina host.

Que diferença seria adicionar VOLUME myvol ao arquivo do Docker?

    
por Shane 09.12.2017 / 07:33

1 resposta

1

Depois de executar o Dockerfile ( VOLUME /myvol ), o ponto de montagem ( /myvol ) será criado (inspecione com docker run -it --rm ${YOURCONTAINER_IMAGE} /bin/bash ):

mount | grep myvol
/dev/mapper/host--vg-var on /myvol type ext4 (rw,relatime,data=ordered)

O ponto de montagem será um Docker-Volume temporário no seu Host:

de5a4052ac6f48788baf17ed66efa603eb89aa023aac7768688839ec6df7dbec/_data/the_data_within_myvol

Após a execução ( docker run -v vol:/myvol myimage ), também o volume vol será criado e ganhará todos os arquivos dentro do seu contêiner em ( /myvol ).

A diferença é a maneira como você cria (dentro do Dockerfile ou com docker run -v ).

    
por 09.12.2017 / 15:05

Tags