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

Um comentário sobre “Docker – Como montar uma pasta do Host Docker dentro de um container

  1. Olá, estou precisando fazer isso mas utilizando docker composer:

    version: ‘2’

    services:
    php:
    container_name: constanceteste_php_1
    build:
    context: ./build
    dockerfile: Dockerfile.dev
    ports:
    – ’82:80′
    depends_on:
    – mysql
    volumes:
    – /var/jenkins_home/workspace/constance-teste:/var/www/html
    mysql:
    image: mysql:5.7
    container_name: crud_mysql_1
    ports:
    – “3307:3306”
    volumes:
    – ~/mysql_docker/constance:/var/lib/mysql
    – “./build/backup-banco-dados:/database”
    environment:
    MYSQL_DATABASE: projeto
    MYSQL_ROOT_PASSWORD: root

    Mas não consigo fazer o mapeamento funcionar, mesmo adicionando ./

    Poderia me ajudar?

Deixe uma resposta

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