2016-04-06 24 views
6

Tôi gặp sự cố khi chạy vùng chứa postgres với thiết lập khối lượng cho thư mục dữ liệu trên máy Mac OS của tôi. Tôi cố gắng để chạy nó như thế này:Chạy vùng chứa postgres với khối lượng dữ liệu qua docker-machine

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 

Mỗi lần tôi nhận được kết quả sau trong nhật ký:

* 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" 

Các phiên bản của Docker, Docker máy, VirtualBox và boot2docker là:

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 

Tôi thấy nhiều ấn phẩm về chủ đề này nhưng hầu hết trong số đó là lỗi thời. Tôi đã thử làm các giải pháp tương tự như cho mysql nhưng nó không giúp đỡ.

Có thể ai đó có thể cập nhật cho tôi: có một số giải pháp tồn tại để chạy vùng chứa postgres với khối lượng dữ liệu thông qua docker-máy không?

Cảm ơn!

Trả lời

2

Nếu bạn đang chạy docker-machine trên máy Mac, tại thời điểm này, bạn không thể kết nối với một thư mục không thuộc không gian người dùng cục bộ của bạn (/Users/<user>/) mà không cần cấu hình thêm.

Điều này là do trên máy Mac, Docker tự động gắn kết gắn kết với thư mục nhà ~. Hãy nhớ rằng vì Docker đang được lưu trữ trong một máy ảo không phải là hệ điều hành Mac cục bộ của bạn, bất kỳ gắn kết khối lượng nào liên quan đến máy chủ lưu trữ - không phải máy của bạn. Điều đó có nghĩa là theo mặc định, Docker không thể xem các thư mục của máy Mac vì nó đang được lưu trữ trên một máy ảo riêng biệt từ Mac OS của bạn.

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

Nếu bạn mở VirtualBox, bạn có thể tạo gắn kết khác (tức là thư mục dùng chung) với máy cục bộ của bạn vào máy chủ lưu trữ và sau đó truy cập chúng theo cách đó.

Xem vấn đề này cho chi tiết cụ thể về chủ đề này: https://github.com/docker/machine/issues/1826

Tôi tin rằng đội Docker sẽ bổ sung những khả năng trong phiên bản sắp tới (đặc biệt là kể từ khi một phiên bản Mac có nguồn gốc là các công trình ngắn).

Các vấn đề liên quan