Problemet är att postgres Dockerfile deklarerar "/var/lib/postgresql/data" som en volym. Detta är bara en normal katalog som lever utanför Union File System som används av bilder. Volymer lever tills inga behållare länkar till dem och de explicit raderas.
Du har några val:
- Använd
--volumes-from
kommando för att dela data med nya behållare. Detta fungerar bara om det bara finns en postgres-bild i taget, men det är den bästa lösningen. - Skriv din egen Dockerfil som skapar data innan du deklarerar volymen. Dessa data kommer sedan att kopieras till volymen när behållaren skapas.
- Skriv ett ingångs- eller cmd-skript som fyller databasen vid körning.
Alla dessa förslag kräver att du använder Volymer för att hantera data när behållaren körs. Alternativt kan du skriva din egen Dockerfile och helt enkelt inte deklarera en volym. Du kan sedan använda docker commit
för att skapa en ny bild efter att ha lagt till data. Detta kommer förmodligen att fungera på kort sikt, men är definitivt inte hur du ska arbeta med behållare - det är inte repeterbart och du kommer så småningom att få slut på lager i Union File System.
Ta en titt på de officiella Docker-dokumenten om att hantera data i behållare för mer information.