Как я могу визуализировать базу данных из postgres докера: контейнер 9.6? Запуск контейнера без объема докеры прекрасен. Запуск контейнера с томом докеров, отображаемым в папку хоста, удаляет базу данных и конфигурацию. Я понимаю, что это правильное поведение докеров, папка хоста монтируется поверх папки контейнера. Как мне обойти эту проблему и сопоставить созданный в контейнере db, запускаемый в папку моего хоста, чтобы он был доступен, когда следующий контейнер запускается?Как сохранить начальный бит в контейнере докера
Не уверен, что я делаю неправильно здесь.
docker run --name test-postgres \
-e POSTGRES_PASSWORD=test123 \
-v /home/vagrant/workspace/shared-data/postgres:/var/lib/postgresql \
-d postgres:9.6
Это закручивает контейнер и создает БД, как ожидалось. Контейнерный результат:
[email protected]:/var/lib/postgresql# ls -al data
total 0
drwxr-xr-x. 2 root root 6 Jun 20 12:32 .
drwxr-xr-x. 3 postgres postgres 17 Jun 20 12:32 ..
Приведенный в карту привод на хосте имеет папку данных, созданную, но пустую!
[[email protected] postgres]$ ls -al
total 1
drwxrwxrwx. 1 vagrant vagrant 0 Jun 20 12:27 .
drwxrwxrwx. 1 vagrant vagrant 0 Jun 18 09:33 ..
-rwxrwxrwx. 1 vagrant vagrant 5 Jun 19 21:47 container.txt
drwxrwxrwx. 1 vagrant vagrant 0 Jun 20 12:27 data
-rwxrwxrwx. 1 vagrant vagrant 0 Jun 20 12:24 dockerhost.txt
[[email protected] postgres]$ ls -al data
total 0
drwxrwxrwx. 1 vagrant vagrant 0 Jun 20 12:27 .
drwxrwxrwx. 1 vagrant vagrant 0 Jun 20 12:27 ..
ОДНАКО, если я карту в папку, которая не отображается на Vagrant (я на окнах) Я не потерять данные. Таким образом, может возникнуть проблема между Docker, сопоставляющим папку с папкой, сопоставленной с Vagrant. Предположил, что каталоги, созданные контейнером postgres (когда они не сопоставляются с общей папкой Vagrant) на хосте docker, имеют нечетные разрешения (владельцы и группа).
[[email protected] ~]$ ls -al
total 20
drwx------. 4 vagrant vagrant 4096 Jun 23 17:51 .
drwxr-xr-x. 3 root root 20 May 21 20:07 ..
-rw-r--r--. 1 vagrant vagrant 18 Nov 20 2015 .bash_logout
-rw-r--r--. 1 vagrant vagrant 193 Nov 20 2015 .bash_profile
-rw-r--r--. 1 vagrant vagrant 231 Nov 20 2015 .bashrc
drwx------. 2 vagrant root 28 Jun 23 17:47 .ssh
-rw-r--r--. 1 vagrant vagrant 6 May 21 13:07 .vbox_version
drwxr-xr-x. 4 vagrant vagrant 39 Jun 23 18:01 workspace
[[email protected] ~]$ ls -al workspace/
total 4
drwxr-xr-x. 4 vagrant vagrant 39 Jun 23 18:01 .
drwx------. 4 vagrant vagrant 4096 Jun 23 17:51 ..
drwxr-xr-x. 3 root root 17 Jun 23 18:01 postgres
drwxr-xr-x. 5 vagrant vagrant 46 Jun 23 17:51 shared-data
[[email protected] ~]$ ls -al workspace/postgres/
total 4
drwxr-xr-x. 3 root root 17 Jun 23 18:01 .
drwxr-xr-x. 4 vagrant vagrant 39 Jun 23 18:01 ..
drwx------. 19 systemd-bus-proxy root 4096 Jun 23 18:01 data
[[email protected] ~]$ ls -al workspace/postgres/data
ls: cannot open directory workspace/postgres/data: Permission denied
[[email protected] ~]$ sudo ls -al workspace/postgres/data
Каталог данных postgres был создан с помощью systemd-bus-proxy. Может ли группа и владелец созданной контейнера папки препятствовать правильной сопоставлению папки с помощью Docker или Vagrant?
Запустите «id 999» в вашем бродячем экземпляре, скорее всего, он вернется с помощью пользователя systemd-bus-proxy. Это проблема с хост-адресами и uid, они часто принадлежат разным пользователям на хосте и внутри контейнера. Именованный том скрывает эту проблему. – BMitch