Docker
======
Once you have configured the server, it's time to install the Docker CE suite on
it. Setting up Docker is easy. Since that is beyond the scope of the
documentation, please refer to the Docker documentation for instructions
pertaining to your operating system.
Do note that installing Docker alone will not suffice, you will also need to
install Docker Compose.
.. note::
The Docker
`documentation `_
contains the links on install Docker and Docker Compose on your system of
choice.
Start and enable Docker
-----------------------
After you have installed Docker and Docker Compose on your machine, you will
need to make some configuration changes.
Docker has been installed but the daemon is neither running nor has been set to
run automatically on a reboot. You can accomplish these changes as follows.
.. code-block:: console
[apps ~]$ sudo systemctl start docker
[apps ~]$ sudo systemctl enable docker
Groups
------
The Docker daemon process ``dockerd`` is only accessible to users that are a
part of the Docker group.
Remember ``apps`` from :doc:`Environments <../environments/index>` and
:doc:`server configuration `? So ``apps`` must a member of
the group ``docker``, which is automatically created when Docker is first
installed.
.. code-block:: console
[apps ~]$ sudo usermod -aG docker apps
Also in a development environment, your developers must also be members of the
group.
.. code-block:: console
[apps ~]$ sudo usermod -aG docker dev1
[apps ~]$ sudo usermod -aG docker dev2
You will need to restart your user sessions, and in my personal experience in
some cases, even restart your computer, after this.
User namespaces
---------------
User namespaces are a way to limit the surface area of the Docker sandbox in
the event of a security breach. Basically user namespaces map ``root`` in the
Docker sandbox to another UID on the host, thereby stripping away all rights of
the root user in a container to cause damage to the host.
.. warning::
While user namespaces are very cool and good, we at IMG have run into a number
of intermittent and irregularly occurring issues when running Omniport under a
namespace. This step is therefore advised only for people who know what they
are doing.
To enable namespaces, elevate your privileges, open the file
``/etc/docker/daemon.json`` and type in the following lines.
.. code-block:: json
{
"userns-remap": "apps"
}
If you decided to go with an alternative name for the main user, replace
``apps`` with the username of that user.
You will need to restart the Docker daemon after this change.
.. code-block:: console
$ sudo systemctl restart docker