StefanScherer / dockerfiles-windows

Various Dockerfiles for Windows Containers
MIT License
1.11k stars 396 forks source link

oracle instant client on nanaoserver #378

Closed alokranjan1234 closed 4 years ago

alokranjan1234 commented 5 years ago

I am trying to install oracle instant client 18.3 on nanoserver using a similar procedure.The website says it requires visual C++ redestributable 2013. I downloaded the and installed on windowsservercore conainer and copied the files to nanoserver similary as in your dockerfile but it still does not work . It seems there are some unresolved dependencies.Are there any other dependencies required for visual C++ redestributable? do we also need to install C++ build tools? How can i track all the dependencies required? Can you please create a nanoserver image for oracle instant client.

StefanScherer commented 5 years ago

Have you tried it in the Windows Server Core image first? Take one step after another helps most of the time. When it runs in core then you can try the old nanoserver API scan tool to look for missing things. Or use procmon.exe or depends.exe to see which DLLs are missing https://stefanscherer.github.io/find-dependencies-in-windows-containers/

alokranjan1234 commented 5 years ago

yeah, I have tried with the windowsservercore image it works perfectly fine after installing visual C++ redestributable 2013.However, when i try to do the same with nanoserver it fails.I also tried to catch the dependencies with dependency walker and copy the dll fies from system32 folder manually to my nanoserver container but my python code breaks with an error message "unable to import the dlls" as it conflicts with other dll files.Is there any safe way to do it other than copying the dlls?

StefanScherer commented 5 years ago

@alokranjan1234 In nanoserver the default user is ContainerUser which has not full access to the filesystem. You may need the USER ContainerAdministrator instruction in your Dockerfile (or --user ContainerAdministrator option of docker run command) to get more privileges.