Docker – Como montar uma pasta do Host Docker dentro de um container

Dica rápida e fácil sobre compartilhamento de pastas no Docker.
É possível compartilhar uma pasta do host Docker com um container, isto pode ser útil para a necessidade de compartilhar dados entre containers de uma forma bem simples.

Sintaxe
docker run -v /pasta-host-docker/:/pasta-container/ -ti -d imagem

-v ou –volume
pasta-host-docker – É a pasta do host Docker, aquele que está rodando o Docker Engine.
Pasta-container – É o ponto de montagem dentro do container.

Laboratório
Docker Host – docker-engine1
Containers – container-servidor1 e container-servidor2

Vou compartilhar a pasta ‘/data‘ do host Docker e montar dentro da pasta ‘/var/www/html‘ dos containers.

Criação da pasta ‘/data’ no host Docker e criação dos containers.

[root@docker-engine1 ~]# mkdir /data/

[root@docker-engine1 ~]# docker run -v /data/:/var/www/html/ -ti -d --name container-servidor1 -h container-servidor1 ubuntu bash

[root@docker-engine1 ~]# docker run -v /data/:/var/www/html/ -ti -d --name container-servidor2 -h container-servidor2 ubuntu bash
[/bash]

/data/ – Pasta do host Docker docker-engine1.
/var/www/html/ – Pasta mapeada nos containers.

Você já pode logar em ambos containers, acessar a pasta compartilhada ‘/var/www/html/’, criar arquivos e etc.

#Container container-servidor1
root@container-servidor1:~# echo "teste teste teste" >> /var/www/html/teste-container1.txt
root@container-servidor1:~# 

#Container container-servidor2
root@container-servidor2:/# cat /var/www/html/teste-container1.txt 
teste teste teste
root@container-servidor2:/# 

#Docker Host docker-engine1
[root@docker-engine1 data]# ls
teste-container1.txt

[root@docker-engine1 data]# cat teste-container1.txt 
teste teste teste
[root@docker-engine1 data]# 

Pulo do gato
A pasta compartilhada /data é local, ela existe apenas no Docker Host e pode ser compartilhada apenas com os containers daquele host.

Aí que vem o pulo do gato, para disponibilizar esta pasta para outros hosts da sua rede você terá que utilizar algum filesystem que trabalhe em cluster, como por exemplo GlusterFS, Flocker, XtreemFS ou até mesmo o bom e velho NFS.

Até logo.

Leonardo Macedo Cerqueira

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *