pyjamas
pyjamas

Reputation: 5408

How to access named or anonymous Docker volumes on Docker for Windows?

If I run docker-compose up with the docker-compose.yml below it runs successfully but I'm unable to find the volume anywhere in my Windows 10 files. I checked in C:\Users\Public\Documents\Hyper-V\Virtual hard disks but it is empty.

version: "3"
services:
  database:
    image: postgres:12.2
    volumes:
      - /var/lib/postgresql/data
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres

If I try specifying the host location for the volume with a Windows path like below I get an error about permissions

version: "3"
services:
  database:
    image: postgres:12.2
    volumes:
      - c:/docker-volumes/database:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: postgres
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres  

database_1  | The files belonging to this database system will be owned by user "postgres".
database_1  | This user must also own the server process.
database_1  |
database_1  | The database cluster will be initialized with locale "en_US.utf8".    
database_1  | The default database encoding has accordingly been set to "UTF8".     
database_1  | The default text search configuration will be set to "english".       
database_1  |
database_1  | Data page checksums are disabled.
database_1  |
database_1  | fixing permissions on existing directory /var/lib/postgresql/data ... 
ok
database_1  | creating subdirectories ... ok
database_1  | selecting dynamic shared memory implementation ... posix
database_1  | selecting default max_connections ... 20
database_1  | selecting default shared_buffers ... 400kB
database_1  | selecting default time zone ... Etc/UTC
database_1  | creating configuration files ... ok
database_1  | running bootstrap script ... 2020-04-27 21:00:29.194 UTC [81] FATAL:  
data directory "/var/lib/postgresql/data" has wrong ownership
database_1  | 2020-04-27 21:00:29.194 UTC [81] HINT:  The server must be started by 
the user that owns the data directory.
database_1  | child process exited with exit code 1
database_1  | initdb: removing contents of data directory "/var/lib/postgresql/data"

What is the easiest way to automatically transfer docker container files like this postgres database to the Windows 10 host?

Upvotes: 0

Views: 999

Answers (1)

user11935734
user11935734

Reputation:

Since docker contents are present in separate container and docker keeps its own file system , so you need to go inside the container to view docker container files.

For this you need to run the following command from command prompt :

docker exec -it <container-id> bash.

I have tried with same docker-compose.yml mentioned in your question and after running docker-compose up , this is the way I was able to view content of container files :

enter image description here

Upvotes: 1

Related Questions