Difference between revisions of "Docker Apps"

From Univention Wiki

Jump to: navigation, search
m (Wiesenthal moved page App Center/Dev to App Center/Dev/Docker Apps)
Line 1: Line 1:
 
{{Version|UCS=4.1}}
 
{{Version|UCS=4.1}}
  
= Apps and Univention App Center =
+
= Docker Apps: Introduction =
  
Univention App Center provides a platform for software vendors and an easy-to-use entry point for Univention
+
Starting with UCS 4.1 the Univention App Center supports Docker. Docker is an OS level virtualization
Corporate Server (UCS) users to extend their IT environment with business software. The App Center is part
+
software that helps deploying Apps in isolated containers. A Docker App is an App in the Univention App
of the web-based UCS management system and gives an overview of available and installed Apps. Its purpose
+
Center that is based on a Docker image, be it a stand-alone image provided by the App Provider or an image
is to present available business applications for UCS and simplify their installation. This allows their easy
+
supported directly by Univention and "enriched" by the App Provider. App Providers are encouraged to use
evaluation and fosters the purchase decision.
+
Docker Apps instead of Non-Docker Apps where possible as development focus of the App Center will be
 +
on the Docker integration.
  
Apps are the content of the App Center and they consist of the business software and some meta data about
+
== Why Docker? ==
the presentation in the App Center. Most of them come with an integration into UCS, e.g. the management
 
system or the mailstack. The purpose of an App is to provide the business solution in a way that it is ready to
 
use after the installation and that comes with a decent default configuration to offer a satisfying impression
 
of the solution. The installation is non-interactive and is done by just a click. Furthermore, an App utilizes
 
the benefits of UCS and the business solution.
 
  
The App Center infrastructure consists of two parts: The already mentioned frontend is part of the web-
+
Prior to UCS 4.1, Apps in the Univention App Center were installed next to all other system packages. This
based UCS management system (Univention Management Console, UMC) which installs, upgrades, removes
+
made the development of enterprise applications for UCS fairly easy but had some shortcomings:
Apps. There is also a command line tool, univention-app, but normally, users use the UMC module.
 
The backend stores the App meta data, the App container images, and the App software packages in their
 
own respective repositories on a remote server operated by Univention. The technological basis of all Apps is
 
Docker, an operating-system-level virtualization software, and (where needed) APT, the well known advanced
 
package tool from Debian.
 
  
Therefore, the App needs to provide a dedicated Docker image or so-called Debian packages. The App Center
+
* All Apps had to be in the Debian package format. While Debian provides excellent tools to build software for it, this still was a considerable amount of effort if the App was not already packaged for Debian.
frontend handles the installation process and will download and start the Docker image and/or install packages
+
* Some Apps required newer versions of certain packages like PHP. This had impact on the stability of the operating system and also led to (not obvious) conflicts between Apps.
using APT.
+
* With a growing number of Apps in the App Center catalog it got harder for Univention to verify that the App did not break anything by enabling/disabling features of certain software components. With the Debian Maintainer scripts, App vendors effectively had root access on the system.
 +
* Whenever a new UCS release was based on a new Debian release, it became extremely difficult to provide all Apps (tested and verified) for this release on day 1. Nearly each App had to be updated and tested by the App Provider during the development phase of UCS.
  
Ideally, integration into UCS can be achieved using the standard Docker image or Debian packages the software solution already provides elsewhere plus one more dedicated package or just a few unpackaged scripts.
+
By supporting Docker, we aim to overcome those points while preserving the simplicity of developing an App.
  
The next sections explain how to prepare your business solution as an App for UCS. It also outlines the
+
== Two kinds of Docker Apps ==
integration possibilities and describes what to do by example. [[App_Center/Dev/Prepare|Let's go]]!
+
 
 +
If you have already worked with Docker, you may know that Docker is sometimes advertised as a way to
 +
encapsulate each and every task into its own container, sometimes referred to as Micro services. In the Univention App Center we currently focus on two different routes:
 +
 
 +
* The App is based on a minimal, yet fully functional UCS image. This image is built by Univention, the App itself is installed and started in the container. This is basically the way it was before the Docker integration in the App Center: Apps consist of Debian packages and are installed on a UCS. But now they are encapsulated by Docker in their UCS based container; think of the container as a low cost virtual machine.
 +
* The App is based on its own image. No further packages are installed, the container is fully functional when started and the App is already installed and running inside.
 +
 
 +
If an App simply does not work properly inside a container with restricted access to the rest of the system, this might be a good reason why it should be a [[App Center/Dev/Non-Docker Apps|Non-Docker App]]. The App Center supports Non-Docker Apps, but they should be avoided where possible. If you feel your App needs to be a Non-Docker App, talk to us. Maybe we find a workaround or even extend the App Center. But maybe a Non-Docker App is okay.
  
 
[[Category:App Center Dev Doc]]
 
[[Category:App Center Dev Doc]]

Revision as of 11:13, 14 September 2016

Produktlogo UCS Version 4.1

Docker Apps: Introduction

Starting with UCS 4.1 the Univention App Center supports Docker. Docker is an OS level virtualization software that helps deploying Apps in isolated containers. A Docker App is an App in the Univention App Center that is based on a Docker image, be it a stand-alone image provided by the App Provider or an image supported directly by Univention and "enriched" by the App Provider. App Providers are encouraged to use Docker Apps instead of Non-Docker Apps where possible as development focus of the App Center will be on the Docker integration.

Why Docker?

Prior to UCS 4.1, Apps in the Univention App Center were installed next to all other system packages. This made the development of enterprise applications for UCS fairly easy but had some shortcomings:

  • All Apps had to be in the Debian package format. While Debian provides excellent tools to build software for it, this still was a considerable amount of effort if the App was not already packaged for Debian.
  • Some Apps required newer versions of certain packages like PHP. This had impact on the stability of the operating system and also led to (not obvious) conflicts between Apps.
  • With a growing number of Apps in the App Center catalog it got harder for Univention to verify that the App did not break anything by enabling/disabling features of certain software components. With the Debian Maintainer scripts, App vendors effectively had root access on the system.
  • Whenever a new UCS release was based on a new Debian release, it became extremely difficult to provide all Apps (tested and verified) for this release on day 1. Nearly each App had to be updated and tested by the App Provider during the development phase of UCS.

By supporting Docker, we aim to overcome those points while preserving the simplicity of developing an App.

Two kinds of Docker Apps

If you have already worked with Docker, you may know that Docker is sometimes advertised as a way to encapsulate each and every task into its own container, sometimes referred to as Micro services. In the Univention App Center we currently focus on two different routes:

  • The App is based on a minimal, yet fully functional UCS image. This image is built by Univention, the App itself is installed and started in the container. This is basically the way it was before the Docker integration in the App Center: Apps consist of Debian packages and are installed on a UCS. But now they are encapsulated by Docker in their UCS based container; think of the container as a low cost virtual machine.
  • The App is based on its own image. No further packages are installed, the container is fully functional when started and the App is already installed and running inside.

If an App simply does not work properly inside a container with restricted access to the rest of the system, this might be a good reason why it should be a Non-Docker App. The App Center supports Non-Docker Apps, but they should be avoided where possible. If you feel your App needs to be a Non-Docker App, talk to us. Maybe we find a workaround or even extend the App Center. But maybe a Non-Docker App is okay.

Personal tools