Назад | Перейти на главную страницу

Где на главном компьютере хранится том докера для создания докеров?

Рассмотрим следующие docker-compose файл

version: "2"
services:
  postgres:
    image: postgres:9.6
    volumes:
      - ./vol_folder:/var/lib/postgresql
    ports:
      - "5432:5432"

Вот моя история команд на моем mac

docker-compose up

psql -h 192.168.99.100 -p 5432 -U postgres

create table test (my_id bigserial primary key);
INSERT INTO test (my_id) values (1);
SELECT * FROM test;

\q

Первоначально я думал, что приведенные выше команды вызовут .sql файл, который будет создан в ./vol_folder главного компьютера. Но я не вижу .sql файл в ./vol_folder скорее просто пустой data каталог в ./vol_folder

Кроме того, если я docker-compose down и docker-compose up снова я вижу, что моих данных в базе данных больше нет.

Я подозревал, что когда я создавал данные при запуске изображения, данные не сохраняются обратно в ./vol_folder таким образом, когда я перезагружаюсь, монтировать с хоста нечего.

Итак, я предполагаю, что мой вопрос в том, где хранится том на моем главном компьютере? Том докера только в одном направлении (например, данные хоста в контейнер), а не в двух направлениях?

Тома обычно хранятся где-то в /var/lib/docker/volumes/

Чтобы узнать больше, попробуйте следующие команды

docker volume ls
docker volume inspect <volume identifier>

Смотрите также: https://www.linux.com/learn/docker-volumes-and-networks-compose

На Mac

docker volume ls  
docker volume inspect <volume identifier>

Дает вам точку монтирования в виртуальной файловой системе Docker, а не в файловой системе Mac.

Докер изначально несовместим с macOS, поэтому Hyperkit используется для запуска виртуального образа. Его данные виртуального изображения находятся в:

~/Library/Containers/com.docker.docker/Data/vms/0

Вы можете исследовать корневой каталог Docker, создав оболочку в виртуальной среде:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
cd /var/lib/docker/volumes/<volume identifier>/_data
ls

Вы можете прервать этот сеанс, нажав Ctrl + a, а затем нажав k и y.