Docker 的较新版本在构建过程中出现权限错误
Newer version of Docker gives permission errors during build
我已经创建了一个 Docker 文件来在 32 位 Ubuntu 图像上安装 IBM Rational Rhapsody,它在 [=29= 上使用 Docker 18.03.0-ce 正确构建] 7 但在 Linux Mint 19 VM (Ubuntu Bionic repos) 上使用 Docker 18.09.2 失败。 IBM 基于 Java 的安装程序引发权限问题,Docker 变更日志没有显示任何明显的原因。
失败命令之前的Docker文件如下:
FROM i386/ubuntu:xenial-20181005 AS installation
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends unzip
COPY Rhapsody812Linux.zip .
RUN unzip -qq Rhapsody812Linux.zip -d Rhapsody812Linux
RUN cd Rhapsody812Linux/disk1/im/installer.linux.gtk.x86 \
&& ./installc input install-rhapsody.xml -acceptLicense
我看到的失败是:
org.eclipse.core.runtime.CoreException: Failed to create artifact table of contents at '/var/ibm/InstallationManager/installRegistry/metadata'.
...IBM's library stack trace truncated by me...
Caused by: java.io.IOException: Permission denied
at sun.nio.ch.FileChannelImpl.release(FileChannelImpl.java:115)
at sun.nio.ch.FileChannelImpl$SimpleFileLockTable.removeAll(FileChannelImpl.java:1024)
at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:112)
at java.nio.channels.spi.AbstractInterruptibleChannel.close(AbstractInterruptibleChannel.java:108)
...IBM's library stack trace truncated by me...
ERROR: Error restoring Installation Manager state.
ERROR: Failed to create InstallRegistry metadata repository: /var/ibm/InstallationManager/installRegistry/metadata.
我发现一个论坛 post 说如果无法访问 /tmp
就会发生这种情况,似乎是:
drwxr-xr-x 2 root root 4096 Mar 18 20:35 /tmp
我 运行 一个 Ubuntu Xenial 图像以交互方式查看我能找到什么,安装程序确实创建了 /var/ibm/InstallationManager/installRegistry/metadata
所以我不确定权限问题在哪里来自.
这些 Docker 版本之间有什么不同,我该如何解决新版本中的构建失败问题?
在连续多次 运行 安装程序后,我得到一个 "CRIMC1086E ERROR" 并发现一个 IBM Knowledge Center entry 提到了这段代码。它建议禁用 IBM Installation Manager 的存储库锁定,这解决了我的问题。
要禁用存储库锁定,请将 cic.repo.locking=false
添加到 config.ini
。就我而言,我在 Dockerfile 中添加了以下内容:
# Disable repo lock to avoid potential permissions issue when lock is released
# Experienced with Docker 18.09.2 on a Linux Mint 19 VM
RUN cd Rhapsody812Linux/disk1/im/installer.linux.gtk.x86/configuration \
&& echo 'cic.repo.locking=false' >> config.ini
我已经创建了一个 Docker 文件来在 32 位 Ubuntu 图像上安装 IBM Rational Rhapsody,它在 [=29= 上使用 Docker 18.03.0-ce 正确构建] 7 但在 Linux Mint 19 VM (Ubuntu Bionic repos) 上使用 Docker 18.09.2 失败。 IBM 基于 Java 的安装程序引发权限问题,Docker 变更日志没有显示任何明显的原因。
失败命令之前的Docker文件如下:
FROM i386/ubuntu:xenial-20181005 AS installation
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends unzip
COPY Rhapsody812Linux.zip .
RUN unzip -qq Rhapsody812Linux.zip -d Rhapsody812Linux
RUN cd Rhapsody812Linux/disk1/im/installer.linux.gtk.x86 \
&& ./installc input install-rhapsody.xml -acceptLicense
我看到的失败是:
org.eclipse.core.runtime.CoreException: Failed to create artifact table of contents at '/var/ibm/InstallationManager/installRegistry/metadata'.
...IBM's library stack trace truncated by me...
Caused by: java.io.IOException: Permission denied
at sun.nio.ch.FileChannelImpl.release(FileChannelImpl.java:115)
at sun.nio.ch.FileChannelImpl$SimpleFileLockTable.removeAll(FileChannelImpl.java:1024)
at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:112)
at java.nio.channels.spi.AbstractInterruptibleChannel.close(AbstractInterruptibleChannel.java:108)
...IBM's library stack trace truncated by me...
ERROR: Error restoring Installation Manager state.
ERROR: Failed to create InstallRegistry metadata repository: /var/ibm/InstallationManager/installRegistry/metadata.
我发现一个论坛 post 说如果无法访问 /tmp
就会发生这种情况,似乎是:
drwxr-xr-x 2 root root 4096 Mar 18 20:35 /tmp
我 运行 一个 Ubuntu Xenial 图像以交互方式查看我能找到什么,安装程序确实创建了 /var/ibm/InstallationManager/installRegistry/metadata
所以我不确定权限问题在哪里来自.
这些 Docker 版本之间有什么不同,我该如何解决新版本中的构建失败问题?
在连续多次 运行 安装程序后,我得到一个 "CRIMC1086E ERROR" 并发现一个 IBM Knowledge Center entry 提到了这段代码。它建议禁用 IBM Installation Manager 的存储库锁定,这解决了我的问题。
要禁用存储库锁定,请将 cic.repo.locking=false
添加到 config.ini
。就我而言,我在 Dockerfile 中添加了以下内容:
# Disable repo lock to avoid potential permissions issue when lock is released
# Experienced with Docker 18.09.2 on a Linux Mint 19 VM
RUN cd Rhapsody812Linux/disk1/im/installer.linux.gtk.x86/configuration \
&& echo 'cic.repo.locking=false' >> config.ini