.. include:: /_includes/all.rst
.. include:: /_includes/snippets/__ANNOUNCEMENTS__.rst

.. _prerequisites:

*************
Prerequisites
*************

.. important::
   :ref:`read_first`
     Ensure you have read this document to understand how this documentation works.


**Table of Contents**

.. contents:: :local:


Supported host OS
=================

The Devilbox runs on all major operating systems which provide ``Docker`` and ``Docker Compose``.
See the matrix below for supported versions:

+----------------+---------------------+--------------------------------+-------------+
| OS             | Version             | Type                           | Recommended |
+================+=====================+================================+=============+
| |img_logo_lin| | Any                 | |ext_lnk_prereq_docker_lin|    | yes         |
+----------------+---------------------+--------------------------------+-------------+
|                |                     |                                |             |
+----------------+---------------------+--------------------------------+-------------+
| |img_logo_mac| | Any                 | |ext_lnk_prereq_docker_mac|    | yes         |
|                |                     +--------------------------------+-------------+
|                |                     | |ext_lnk_prereq_docker_mac_tb| |             |
+----------------+---------------------+--------------------------------+-------------+
|                |                     |                                |             |
+----------------+---------------------+--------------------------------+-------------+
| |img_logo_win| | Windows 7           | |ext_lnk_prereq_docker_win_tb| | yes         |
|                +---------------------+--------------------------------+-------------+
|                | Windows 10          | |ext_lnk_prereq_docker_win|    | yes         |
|                |                     +--------------------------------+-------------+
|                |                     | |ext_lnk_prereq_docker_win_tb| |             |
|                +---------------------+--------------------------------+-------------+
|                | Windows Server 2016 | |ext_lnk_prereq_docker_win_ee| | yes         |
+----------------+---------------------+--------------------------------+-------------+


Required software
=================

The only requirements for the Devilbox is to have ``Docker`` and ``Docker Compose`` installed,
everything else is bundled and provided withing the Docker container.
The minimum required versions are listed below:

* ``Docker``: 1.12.0+
* ``Docker Compose``: 1.9.0+


Additionally you will require ``git`` in order to clone the devilbox project.

.. seealso::

   * |ext_lnk_install_docker|
   * |ext_lnk_docker_compose_install|
   * |ext_lnk_download_git_win|
   * :ref:`howto_find_docker_and_docker_compose_version`


.. _prerequisites_docker_installation:

Docker installation
===================

Linux
-----

|img_logo_lin|

Docker on Linux requires super user privileges which is granted to a system
wide group called ``docker``. After having installed Docker on your system,
ensure that your local user is a member of the ``docker`` group.

.. code-block:: bash

   host> id

   uid=1000(cytopia) gid=1000(cytopia) groups=1000(cytopia),999(docker)

.. seealso::

   * |ext_lnk_install_docker_centos|
   * |ext_lnk_install_docker_debian|
   * |ext_lnk_install_docker_fedora|
   * |ext_lnk_install_docker_ubuntu|
   * |ext_lnk_install_docker_linux_post_steps| (covers ``docker`` group)

Mac
---

|img_logo_mac|

On MacOS Docker is available in two different forms: **Docker for Mac**
and **Docker Toolbox**.

Docker for Mac
^^^^^^^^^^^^^^

Docker for Mac is the native and recommended version to choose when using the
Devilbox.

Docker for Mac requires super user privileges which is granted to a system
wide group called ``docker``. After having installed Docker on your system,
ensure that your local user is a member of the ``docker`` group.

.. code-block:: bash

   host> id

   uid=502(cytopia) gid=20(staff) groups=20(staff),999(docker)

.. seealso::

   Docker for Mac
     * |ext_lnk_install_docker_mac|
     * |ext_lnk_install_docker_mac_get_started|

Docker Toolbox
^^^^^^^^^^^^^^

If you still want to use Docker Toolbox, ensure you have read its
drawbacks in the below provided links.

.. seealso::

   Docker Toolbox
     * |ext_lnk_install_docker_toolbox_mac|
     * |ext_lnk_install_docker_toolbox_mac_native_vs_toolbox|
     * |ext_link_docker_machine|

.. important:: :ref:`howto_docker_toolbox_and_the_devilbox`

Windows
-------

|img_logo_win|

On Windows Docker is available in two different forms: **Docker for Windows**
and **Docker Toolbox**.

Docker for Windows
^^^^^^^^^^^^^^^^^^

Docker for Windows is the native and recommended version to choose when using
the Devilbox. This however is only available since **Windows 10**.

Docker for Windows requires administrative privileges which is granted to a system
wide group called ``docker-users``. After having installed Docker on your system,
ensure that your local user is a member of the ``docker-users`` group.

.. seealso::

   Docker for Windows
     * |ext_lnk_install_docker_win|
     * |ext_lnk_install_docker_win_get_started|

Docker Toolbox
^^^^^^^^^^^^^^

If you are on **Windows 7** or still want to use Docker Toolbox, ensure you
have read its drawbacks in the below provided links.

.. seealso::

   Docker Toolbox
     * |ext_lnk_install_docker_toolbox_win|
     * |ext_link_docker_machine|

.. important:: :ref:`howto_docker_toolbox_and_the_devilbox`


Post installation
=================

Read the Docker documentation carefully and follow all **install** and **post-install** steps.
Below are a few stumbling blocks to check that might or might not apply depending on your host
operating system and your Docker version.

.. seealso:: :ref:`troubleshooting`

User settings
-------------

Some versions of Docker require your local user to be in the ``docker`` group
(or ``docker-users`` on Windows).

Shared drives
-------------

Some versions of Docker require you to correctly setup shared drives. Ensure the desired locations
are being made available to Docker and the correct credentials are applied.

Network and firewall
--------------------

On Windows, ensure your firewall allows access to shared drives.

SE Linux
--------

Make sure to read any shortcomings when SE Linux is enabled.

General
-------

It could also help to do a full system restart after the installation has been finished.


Optional previous knowledge
===========================

In order to easily work with the Devilbox you should already be familiar with the following:

* Navigate on the command line
* Docker Compose commands (|ext_lnk_docker_compose_cmd_up|, |ext_lnk_docker_compose_cmd_stop|,
  |ext_lnk_docker_compose_cmd_kill|, |ext_lnk_docker_compose_cmd_rm|,
  |ext_lnk_docker_compose_cmd_logs| and |ext_lnk_docker_compose_cmd_pull|)
* Docker Compose ``.env`` file
* Know how to use ``git``




.. seealso::

   * |ext_lnk_docker_compose_cmd_reference|
   * |ext_lnk_docker_compose_env_file|
   * :ref:`troubleshooting`
