linuxubuntu-12.04docker

Installing cron via apt-get fails in a docker ubuntu:12.04 container from permissions problems


I'm attempting to install cron (among other packages) via apt-get install in my Dockerfile. I've simplified my Dockerfile down to a bare minimum of:

FROM ubuntu:12.04
RUN apt-get update
RUN apt-get install -y cron

The error that I'm seeing during the install process is:

Step 4 : RUN apt-get install -y cron
 ---> Running in 991339f4be58
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  anacron logrotate checksecurity exim4 postfix mail-transport-agent
The following NEW packages will be installed:
  cron
0 upgraded, 1 newly installed, 0 to remove and 12 not upgraded.
Need to get 85.0 kB of archives.
After this operation, 308 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu/ precise-updates/main cron amd64 3.0pl1-120ubuntu4 [85.0 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 85.0 kB in 0s (204 kB/s)
Selecting previously unselected package cron.
(Reading database ... 7551 files and directories currently installed.)
Unpacking cron (from .../cron_3.0pl1-120ubuntu4_amd64.deb) ...
Setting up cron (3.0pl1-120ubuntu4) ...
Adding group `crontab' (GID 102) ...
groupadd: failure while writing changes to /etc/group
addgroup: `/usr/sbin/groupadd -g 102 crontab' returned error code 10. Exiting.
dpkg: error processing cron (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 cron
E: Sub-process /usr/bin/dpkg returned an error code (1)
2014/07/03 10:09:13 The command [/bin/sh -c apt-get install -y cron] returned a non-zero code: 100

Running $ groupadd /etc/group manually inside the docker container results in the same error "groupadd: failure while writing changes to /etc/group".

Other packages such as wget and curl are installed fine. Is there a process that docker needs to have running to be able to perform groupadds? Or is there a step in the Dockerfile that needs to happen first that I'm missing?

Thanks in advance.


Solution

  • I had to disable SELinux on my fedora machine running docker. Doing a setenforce 0, editing /etc/selinux/conf to disabled and rebooting my machine fixed it. I didn't realize that my docker container would inherit permissions problems from the machine running it.