2016-04-06 30 views
6

Ho un problema con il contenitore di Postgre in esecuzione con i volumi di impostazione per la cartella di dati sul mio computer Mac OS. Ho provato a farlo funzionare come in questo modo:Esegui contenitore postgres con volumi di dati tramite la finestra mobile

docker run \ 
    --name my-postgres \ 
    -e POSTGRES_USER=admin \ 
    -e POSTGRES_PASSWORD=password \ 
    -e POSTGRES_DB=some_db_dev \ 
    -v $PG_LOCAL_DATA:/var/lib/postgresql/data \ 
    -d postgres:9.5.1 

Ogni volta che ho ottenuto il seguente risultato nei log:

* Starting PostgreSQL 
The files belonging to this database system will be owned by user "postgres". 
This user must also own the server process. 

The database cluster will be initialized with locale "en_US.utf8". 
The default database encoding has accordingly been set to "UTF8". 
The default text search configuration will be set to "english". 

Data page checksums are enabled. 

fixing permissions on existing directory /var/lib/postgresql/data ... ok 
initdb: could not create directory "/var/lib/postgresql/data/pg_xlog": Permission denied 
initdb: removing contents of data directory "/var/lib/postgresql/data" 

versioni di finestra mobile, finestra mobile macchina, VirtualBox e boot2docker sono:

docker-machine version 0.6.0, build e27fb87 
Docker version 1.10.2, build c3959b1 
VirtualBox Version 5.0.16 r105871 
boot2docker 1.10.3 

Ho visto molte pubblicazioni su questo argomento ma la maggior parte di esse sono obsolete. Avevo provato a fare la soluzione simile a mysql ma non è stato d'aiuto.

Forse qualcuno può aggiornarmi: esiste una soluzione per eseguire container Postgres con volumi di dati tramite la finestra mobile?

Grazie!

risposta

2

Se si esegue la finestra mobile su un Mac, al momento non è possibile eseguire il montaggio in una directory che non fa parte dello spazio utente locale (/Users/<user>/) senza configurazione aggiuntiva.

Questo perché sul Mac, Docker crea automaticamente un bind mount con la directory home ~. Ricorda che poiché Docker è ospitato in una VM che non è il tuo Mac OS locale, qualsiasi montatura di volume è relativa alla VM host, non alla tua macchina. Ciò significa che, per impostazione predefinita, Docker non può vedere le directory del tuo Mac dal momento che è ospitato su una VM separata dal tuo Mac OS.

Mac OS => Linux Virtual Machine => Docker 
        ^------------------^ 
        Docker Can See VM 
    ^-----------------X----------------^ 
     Docker Can't See Here 

Se si apre VirtualBox, è possibile creare altri supporti (cioè cartelle condivise) al computer locale per l'host VM e poi accedervi in ​​quel modo.

Vedere questo problema per le specifiche sul tema: https://github.com/docker/machine/issues/1826

credo che la squadra Docker è l'aggiunta di queste funzionalità nelle prossime versioni (soprattutto perché una versione nativa per Mac è in opere brevi).

Problemi correlati