Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagebash
titleCreating the magic folder
tobi@tobi-VirtualBox:~$ ls
Desktop  Documents  Downloads  examples.desktop  Music  Pictures  Public  Templates  Videos
tobi@tobi-VirtualBox:~$ cd Documents/
tobi@tobi-VirtualBox:~/Documents$ ls
tobi@tobi-VirtualBox:~/Documents$ mkdir odysseusdocker
tobi@tobi-VirtualBox:~/Documents$ ls
odysseusdocker
tobi@tobi-VirtualBox:~/Documents$ cd odysseusdocker/
tobi@tobi-VirtualBox:~/Documents/odysseusdocker$ mkdir odysseus

 


  1. Now we want to create the Dockerfile which describes our Docker container
  2. Create a new file called "Dockerfile" within our "odysseusdocker"-folder (e.g. with nano again or whatever you prefer)
  3. Put the content from the box below into the Dockerfile
Code Block
languagebash
titleDockerfile
FROM ubuntu
MAINTAINER <Your Name>
LABEL Description="Docker Image for running the Odysseus data stream management system" Version="0.1"  URL="http://odysseus.informatik.uni-oldenburg.de"

# Install required packages
RUN apt-get -y update && apt-get -y install apt-utils wget unzip openjdk-8-jre bash nano

# Download nightly build
RUN mkdir -p /usr/lib/odysseus && mkdir -p /var/log/odysseus
RUN wget -c http://odysseus.offis.uni-oldenburg.de/download/products/server/lastBuild/odysseus.server-linux.gtk.x86_64.zip -O /tmp/odysseus.zip && unzip /tmp/odysseus.zip -d /usr/lib/odysseus && rm -f /tmp/odysseus.zip

# Define additional VM parameters
RUN echo "-XX:NativeMemoryTracking=summary" >> /usr/lib/odysseus/odysseus.ini && \
    echo "-XX:+HeapDumpOnOutOfMemoryError" >> /usr/lib/odysseus/odysseus.ini && \
    echo "-XX:HeapDumpPath=/var/log/odysseus/dumps" >> /usr/lib/odysseus/odysseus.ini && \
    echo "-XX:ErrorFile=/var/log/odysseus/dumps/hs_err_pid%p.log" >> /usr/lib/odysseus/odysseus.ini && \
    sed -i "s/org\.apache\.log4j\.ConsoleAppender/org\.apache\.log4j\.FileAppender\nlog4j\.appender\.default\.File=\/var\/log\/odysseus\/odysseus\.log/" /usr/lib/odysseus/plugins/de.uniol.inf.is.odysseus.slf4j_1.7.16/log4j.properties

# Create group and user
RUN groupadd odysseus && \
    useradd -r -g odysseus -s /bin/bash -d /var/lib/odysseus -m odysseus && \
    chown -R odysseus /var/log/odysseus

# Change timezone for UTC
RUN echo "UTC" > /etc/timezone

# Expose web server port for wsdl
EXPOSE 9669

# Change user and setup environment
USER odysseus
ENV home /var/lib/odysseus
WORKDIR /var/lib/odysseus

CMD ["/usr/lib/odysseus/odysseus"]

...


Now we have everything prepared in that folder.

...

We want to make is easy for others to install Odysseus. Hence, we will push our image to DockerHub.

  1. FirstlyFirst, we need to tag our container: sudo docker tag c39f4bd5fd33 tobi42/odysseus_server:03-16
    1. Notice, that the name "tobi42" before the slash is your account name on Dockerhub, next is the image name and after the : you have the version label or tag
  2. Next, we login to DockerHub: sudo docker login
  3. Now push it to DockerHub: sudo docker push tobi42/odysseus_server:03-16
  4. Take a look on your DockerHub account. You should be able to see your container.

...

  • See all your running containers: sudo docker ps
  • See all your started containers (including non-running containers): sudo docker ps -a
  • Stop all running containers: sudo docker stop $(sudo docker ps -a -q)
  • Delete all started containers: sudo docker rm $(sudo docker ps -a -q)
  • Delete all images: sudo docker rmi $(sudo docker images -q)

...