Estoy ejecutando Docker Toolbox v. 1.13.1a en Windows 7 Pro Service pack 1 x64 OS. con Virtual Box Version 5.1.14 r112924
cuando trato de ejecutar cualquier imagen acoplable, por ejemplo official postgres image de Docker Hub con volúmenes deshabilitados, ¡funciona bien!
Pero cuando enable the volumes falla .
Intenté todas las documentaciones oficiales.
La VM tiene una carpeta compartida según sea necesario y tiene full access a ella también captura de pantalla de carpeta compartida
En el caso de mi ejemplo de postgresql, falla con el siguiente log
The files belonging to this database system will be owned by user "postgres". This user must also own the server process. The database cluster will be initialized with locale "en_US.utf8". The default database encoding has accordingly been set to "UTF8". The default text search configuration will be set to "english". Data page checksums are disabled. fixing permissions on existing directory /var/lib/postgresql/data ... ok creating subdirectories ... ok selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting dynamic shared memory implementation ... posix selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting dynamic shared memory implementation ... posix creating configuration files ... ok running bootstrap script ... LOG: could not link file "pg_xlog/xlogtemp.27" to "pg_xlog/000000010000000000000001": Operation not permitted FATAL: could not open file "pg_xlog/000000010000000000000001": No such file or directory child process exited with exit code 1 initdb: removing contents of data directory "/var/lib/postgresql/data" Sé que es el problema con los folder permissions . ¡Pero un poco atascado! mil gracias de antemano
Estuve ocupado con este problema todo el día y llegué a la conclusión de que actualmente simplemente no es posible ejecutar postgresql dentro de un contenedor docker mientras mantiene sus datos persistentes en un volumen separado.
Incluso intenté ejecutar el contenedor sin vincularlo a un volumen y copiar los datos que estaban originalmente en /var/lib/postgresql en una carpeta de mi sistema operativo host (Windows 10 Home), luego copié eso en la carpeta que luego se vinculó al contenedor en sí.
Por desgracia, tengo el siguiente error:
FATAL: data directory "/var/lib/postgresql/data/pgadmin" has wrong ownership HINT: The server must be started by the user that owns the data directory.En conclusión: algo va mal con la propiedad y el usuario correcto que lo posee y para poder solucionarlo, necesitará una línea de comandos de Unix en Windows que pueda ejecutar Docker (algo que actualmente no es posible con Bash en Ubuntu en Windows que se ejecuta con binarios de Ubuntu 16.04).
Tal vez, en el futuro, podrá ejecutar los comandos necesarios (que se encuentran aquí , en Arbitrary --user Notes ), pero estos son comandos *nix y powershell (iniciado por Kitematic) no puede ejecutarlos. Bash para Ubuntu para Windows podría ejecutarlos, pero ese shell no tiene conexión con el demonio/servicio de la ventana acoplable en Windows...
TL; DR: Perdió un día de trabajo: actualmente es imposible en Windows.
He estado tratando de solucionar este problema también ..
Al principio pensé que era un problema de enlace simbólico (porque el primer error falla en "no se pudo vincular... operación no permitida)
Para asegurarse de que el enlace simbólico esté permitido, debe:
virtualbox.exe y seleccione ejecutar como administradorsecpol.msc > "Políticas locales-Asignaciones de derechos de usuario" agregue su usuario a "Crear enlaces simbólicos"VBoxManage setextradata VM_NAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/SHARED_FOLDER_NAME 1
Alternativamente, también puede usar la carpeta c:\User\username que se comparte y el enlace simbólico habilitado por la instalación predeterminada de dockertools
Ahora puedo crear enlaces simbólicos en la carpeta compartida desde el contenedor docker... pero sigo teniendo el mismo error "no se pudo vincular... operación no permitida"
Entonces, la razón debe estar en otro lugar ... en los permisos del archivo, como dijiste, pero no veo por qué.