jLuger.de - Owncloud in a container: getting the runtime files

In the last post I've explained the parts to isolate a container but the runtime is still missing. With runtime I mean the program files/executables to run my Owncloud installation. To make live easy for me I've used a docker installation in a virtual machine.
I've started of with the Dockerfile from Owncloud in home directory and modified it for my needs:
FROM ubuntu:17.04

RUN \
apt-get update && \
apt-get -y upgrade && \
apt-get install -y lighttpd && \
apt-get install -y php-fpm && \
apt-get install -y crudini && \
apt-get install -y php7.0-sqlite php-curl php-gd php-zip php7.0-xml php7.0-mbstring

RUN crudini --set /etc/php/7.0/fpm/php.ini PHP cgi.fix_pathinfo 1

RUN apt-get remove -y crudini && apt-get clean

CMD ["/bin/sh"]
It just installs the needed files and has a shell as its running command.

To build it I've used this command
docker build -t base_image_owncloud:1.0 .

Then I've started the container with
docker run base_image_owncloud:1.0
looked up the container id with
docker ps -a
and exported it with
docker export -o base_owncloud.tar b51aad335f21

This gave me a base_owncloud.tar file that I've downloaded at my computer. I've put the extracted files alongside my Ownlcould installation as I didn't want to mix the files or change the Owncloud setup.

To use the runtime files I've used unshare with root id and pid and mount namespaces. Then I've mount binded the Owncloud setup to the correct location in the runtime and made a chroot so that my runtime would be the new root. This created a nice container but still wouldn't run my Owncloud container as I've stumbled on another problem that will be topic of the next blog post.


This post is part of a series: