microsoft / nanoserver泊坞窗图像无法启动java.exe,而microsoft / windowsservercore成功

我正在尝试使用microsoft/nanoserver映像中的java创buildWindows泊坞窗图像。

系统信息

 > docker version Client: Version: 17.06.0-ce API version: 1.30 Go version: go1.8.3 Git commit: 02c1d87 Built: Fri Jun 23 21:30:30 2017 OS/Arch: windows/amd64 Server: Version: 17.06.0-ce API version: 1.30 (minimum version 1.24) Go version: go1.8.3 Git commit: 02c1d87 Built: Fri Jun 23 22:19:00 2017 OS/Arch: windows/amd64 Experimental: true > docker info Containers: 2 Running: 0 Paused: 0 Stopped: 2 Images: 22 Server Version: 17.06.0-ce Storage Driver: windowsfilter Windows: Logging Driver: json-file Plugins: Volume: local Network: l2bridge l2tunnel nat null overlay transparent Log: awslogs etwlogs fluentd json-file logentries splunk syslog Swarm: inactive Default Isolation: hyperv Kernel Version: 10.0 15063 (15063.0.amd64fre.rs2_release.170317-1834) Operating System: Windows 10 Enterprise OSType: windows Architecture: x86_64 CPUs: 1 Total Memory: 5.999GiB Name: MYSERVER ID: RKVO:G6SF:7OPN:RR5Y:4DGX:DSZG:MCGO:FTNS:YLWY:2LKH:TRZE:JU76 Docker Root Dir: C:\ProgramData\Docker Debug Mode (client): false Debug Mode (server): true File Descriptors: -1 Goroutines: 86 System Time: 2017-08-09T09:36:17.8905051-07:00 EventsListeners: 0 Registry: https://index.docker.io/v1/ Experimental: true Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false 

Dockerfile

Dockerfile是本文稍微修改的版本,第4节: https ://alexandrnikitin.github.io/blog/running-java-inside-windows-container-on-windows-server/

 FROM microsoft/nanoserver RUN powershell -Command iwr 'http://javadl.oracle.com/webapps/download/AutoDL?BundleId=210185' -Outfile 'C:\jre-8u91-windows-x64.exe' RUN powershell start-process -filepath C:\jre-8u91-windows-x64.exe -passthru -wait -argumentlist "/s,INSTALLDIR=c:\Java\jre1.8.0_91,/L,install64.log" RUN del C:\jre-8u91-windows-x64.exe CMD [ "c:\\Java\\jre1.8.0_91\\bin\\java.exe", "-version"] 

build立图像

 > docker build -t java-nano:jre1.8.0_91 . Sending build context to Docker daemon 2.048kB Step 1/5 : FROM microsoft/nanoserver ---> 9473d5d31d36 Step 2/5 : RUN powershell -Command iwr 'http://javadl.oracle.com/webapps/download/AutoDL?BundleId=210185' -Outfile 'C:\jre-8u91-windows-x64.exe' ---> Running in 33ec7e07b8ef ---> c2002718022c Removing intermediate container 33ec7e07b8ef Step 3/5 : RUN powershell start-process -filepath C:\jre-8u91-windows-x64.exe -passthru -wait -argumentlist "/s,INSTALLDIR=c:\Java\jre1.8.0_91,/L,install64.log" ---> Running in 6694b9e2d6cf Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 3 460 1468 1424 1 jre-8u91-windows-x64 ---> 751796f146a7 Removing intermediate container 6694b9e2d6cf Step 4/5 : RUN del C:\jre-8u91-windows-x64.exe ---> Running in 8bac610ca925 ---> 1d953ec09391 Removing intermediate container 8bac610ca925 Step 5/5 : CMD c:\Java\jre1.8.0_91\bin\java.exe -version ---> Running in 8f9aecd8aa6b ---> 865e2c4a3b5c Removing intermediate container 8f9aecd8aa6b Successfully built 865e2c4a3b5c Successfully tagged java-nano:jre1.8.0_91 

运行

 > docker run -it java-nano:jre1.8.0_91 C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container 55868b76113bbb1231e1b59e26bf2301b7d1a80a7cb1617efed862a5d4516401 encountered an error during CreateProcess: failure in a Windows system call: The system cannot find the file sp ecified. (0x2) extra info: {"ApplicationName":"","CommandLine":"c:\\Java\\jre1.8.0_91\\bin\\java.exe -version","User":"","WorkingDirectory":"C:\\","Environment":{},"EmulateConsole":true,"CreateStdInPipe":true,"CreateStdOutPipe":true,"CreateStdErrPipe":false,"ConsoleSize" :[48,164]}. 

基本的图像运行

 >docker run microsoft/nanoserver Microsoft Windows [Version 10.0.14393] (c) 2016 Microsoft Corporation. All rights reserved. 

Windows Server Core版本

Dockerfile

 FROM microsoft/windowsservercore RUN powershell -Command iwr 'http://javadl.oracle.com/webapps/download/AutoDL?BundleId=210185' -Outfile 'C:\jre-8u91-windows-x64.exe' RUN powershell start-process -filepath C:\jre-8u91-windows-x64.exe -passthru -wait -argumentlist "/s,INSTALLDIR=c:\Java\jre1.8.0_91,/L,install64.log" RUN del C:\jre-8u91-windows-x64.exe CMD [ "c:\\Java\\jre1.8.0_91\\bin\\java.exe", "-version"] 

build立图像

 > docker build -t java-core:jre1.8.0_91 . Sending build context to Docker daemon 2.048kB Step 1/5 : FROM microsoft/windowsservercore ---> 2c42a1b4dea8 Step 2/5 : RUN powershell -Command iwr 'http://javadl.oracle.com/webapps/download/AutoDL?BundleId=210185' -Outfile 'C:\jre-8u91-windows-x64.exe' ---> Running in 8eef04cb451e ---> 9f1ad85b2b05 Removing intermediate container 8eef04cb451e Step 3/5 : RUN powershell start-process -filepath C:\jre-8u91-windows-x64.exe -passthru -wait -argumentlist "/s,INSTALLDIR=c:\Java\jre1.8.0_91,/L,install64.log" ---> Running in ef30759baacf Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 0 1 388 68 0.16 2060 1 jre-8u91-windows-x64 ---> f05ce070cd55 Removing intermediate container ef30759baacf Step 4/5 : RUN del C:\jre-8u91-windows-x64.exe ---> Running in 8dfc09e67472 ---> ea9f0c6c9f8a Removing intermediate container 8dfc09e67472 Step 5/5 : CMD c:\Java\jre1.8.0_91\bin\java.exe -version ---> Running in c0aa37469049 ---> c1b7ccca9adc Removing intermediate container c0aa37469049 Successfully built c1b7ccca9adc Successfully tagged java-core:jre1.8.0_91 

运行

 > docker run -it java-core:jre1.8.0_91 java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b15, mixed mode) 

如何检测,nanoserver有什么问题?
观察C:\ProgramData\Docker\containers\<id>什么也没有 – 没有* .log文件。

这似乎是一个安装问题。 一步你3

 Step 3/5 : RUN powershell start-process -filepath C:\jre-8u91-windows-x64.exe -passthru -wait -argumentlist "/s,INSTALLDIR=c:\Java\jre1.8.0_91,/L,install64.log" 

它在退出代码方面运行成功,但可能是安装程序遇到一些问题。 你应该运行一个shell并检查安装程序是否工作

 docker run -it java-nano:jre1.8.0_91 powershell 

也可以尝试重新安装,看看是否有任何错误,你从安装程序。 可能是一些依赖不存在