Рассмотрим следующие 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.