dockerdocker-buildrhapsody

Newer version of Docker gives permission errors during build


I've created a Dockerfile to install IBM Rational Rhapsody on a 32bit Ubuntu image, which builds correctly with Docker 18.03.0-ce on Windows 7 but fails with Docker 18.09.2 on a Linux Mint 19 VM (Ubuntu Bionic repos). IBM's Java-based installer throws a permissions issue, and the Docker changelogs didn't show any obvious reasons for this.

The Dockerfile up to the failing command is as follows:

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

The failure I'm seeing is:

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$1.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.

I found a forum post stating this can happen if /tmp isn't accessible, which it seems to be:

drwxr-xr-x 2 root root 4096 Mar 18 20:35 /tmp

I ran an Ubuntu Xenial image interactively to see what I could find out, and the installer does create /var/ibm/InstallationManager/installRegistry/metadata so I'm not sure where the permission issue is coming from.

What could be different between these Docker versions, and how can I resolve this build failure in the newer version?


Solution

  • After running the installer multiple times consecutively, I got a "CRIMC1086E ERROR" and found an IBM Knowledge Center entry mentioning this code. It suggests disabling the IBM Installation Manager's repository locking, which resolved the issue for me.

    To disable the repository lock, add cic.repo.locking=false to config.ini. In my case, I made the following addition to my 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