我有一個相當標準的Java圖像,並添加了一些依賴項,我正在寫這個Dockerfile。這裏是我在Dockerfile中遇到問題的地方:權限error在Dockerfile中運行Java時區更新程序JAR
RUN which java
RUN ["/usr/bin/java", "-jar", "tzupdater.jar", "-v", "-l"]
我以爲每個Dockerfile命令都是以root身份運行的?但是,當我嘗試從這個Dockerfile打造,我快到了此權限問題也發生在我的本地環境時,我忘了運行這個JAR爲sudo
:
$ docker build -t container-w-tz-update .
Uploading context 1.122 GB
Uploading context
Step 0 : FROM company/java-img-with-dependencies:1.0
---> 0101010101
...
Step 3 : RUN which java
---> Running in 0101010101
/usr/bin/java
---> 0101010101
Step 4 : RUN ["/usr/bin/java", "-jar", "tzupdater.jar", "-v", "-l"]
---> Running in 0101010101
java.vendor: Sun Microsystems Inc.
java.version: 1.6.0_45
tzupdater version 2.1.1-b01
Downloaded file to /tmp/tz.tmp/tzdata.tar.gz
Downloaded file to /tmp/tz.tmp/sha512hash
failed.
Cant rename {0} to {1}.
com.sun.tools.tzupdater.TzRuntimeException: com.sun.tools.tzupdater.TzRuntimeException: Cant rename {0} to {1}.
Caused by: com.sun.tools.tzupdater.TzRuntimeException: Cant rename {0} to {1}.
at com.sun.tools.tzupdater.TimezoneUpdater.update(TimezoneUpdater.java:301)
at com.sun.tools.tzupdater.TimezoneUpdater.run(TimezoneUpdater.java:249)
at com.sun.tools.tzupdater.TimezoneUpdater.main(TimezoneUpdater.java:643)
2017/04/05 22:20:23 The command [/usr/bin/java -jar tzupdater.jar -v -l] returned a non-zero code: 1
我可以運行此實用程序sudo
在我的本地與完全相同版本的Java沒有問題。當我嘗試在本地運行而沒有sudo
時,我收到了同樣的錯誤。思考?
您可以發佈您的基礎鏡像的Dockerfile嗎? 「tzupdater.jar」實際上會做什麼? – shizhz
@shizhz tzupdater.jar是Oracle提供的用於更新Java標準庫中的時區數據的實用工具。它應該適用於Java 1.5到1.8。我明天將會發佈一個完整的Dockerfile。 –
感謝您的信息,並對'tzupdater.jar'缺乏知識感到抱歉,我會嘗試查看是否可以重現您的問題:-) – shizhz