Corrects syntax, adds internal TOC, and adds link to tutorials.rst

Signed-off-by: Michael Vincerra <michaelx.vincerra@intel.com>
This commit is contained in:
Michael Vincerra
2018-06-21 13:22:13 -07:00
parent 14c47506fc
commit 53ad59e18d
2 changed files with 137 additions and 163 deletions
+136 -163
View File
@@ -1,260 +1,233 @@
.. _docker:
Docker* on |CL|
######################################################
|CLOSIA| supports multiple containerization platforms, including Docker*.
|CL| has many `unique features`_ including a minimal default installation
which makes it compelling to use as a host for container workloads, management, and orchestration.
This tutorial will go over:
#. Installing the required bundle for Docker
#. Integration with Clear Containers (optional)
#. Additional Docker* configuration on |CL|
#. Pulling and Running an image from Docker* Hub
#. Creating a Docker* swarm cluster
Run Docker\* on Clear Linux\*
#############################
|CLOSIA| supports multiple containerization platforms, including a Docker\*
solution.|CL| has many `unique features`_ including a minimal default
installation which makes it compelling to use as a host for container
workloads, management, and orchestration.
This tutorial covers:
.. contents:: :local:
:depth: 1
.. note::
This tutorial focuses on the installaton of the Docker* ecosystem.
If you want to use |CL| as a Docker* container image,
refer to the official `|CL| image on Docker* Hub`_ and `building a custom Clear Linux docker image`_ .
This tutorial focuses on the installaton of the Docker ecosystem.
If you want to use |CL| as a Docker container image, refer to the
official `Clear Linux image on Docker Hub`_
and `building a custom Clear Linux docker image`_ .
Prerequisites
=============
*************
* You have a basic understanding of Linux and Docker.
* Basic understanding of Linux and Docker.
* You have successfully installed
:ref:`Clear Linux on bare metal<bare-metal-install>`
* Successful completion: :ref:`bare-metal-install`
* Your |CL| installation has transparent network access to the Internet.
* |CL| environment that has transparent network access to the Internet.
If you are behind a HTTP proxy server, in a corporate setting for example,
please refer to the `Docker* proxy instructions`_ .
please refer to the `Docker proxy instructions`_ .
|
|
|
Install the containers-basic bundle
***********************************
Software in |CL| is offered in the form of `bundles`_ to provide a
complete function. The *containers-basic* provides all the required software
packages to run Docker images as containers.
Installing the required bundle
===============================
#. First, install the *containers-basic* bundle by running this
:command:`swupd` command:
Software in Clear Linux is offered in the form
of `bundles`_ to provide a complete function.
The *containers-basic* provides all the required software packages to run Docker images as containers.
.. code-block:: bash
#. First, install the *containers-basic* bundle by running this :command:`swupd` command:
sudo swupd bundle-add containers-basic
.. code-block:: bash
#. Start the Docker daemon through systemd manager by running this command:
sudo swupd bundle-add containers-basic
.. code-block:: bash
sudo systemctl start docker
#. Start the Docker* daemon through systemd manager by running this command:
If you want Docker to start automatically on boot, enable the
systemd service by running this command:
.. code-block:: bash
sudo systemctl start docker
If you want Docker* to start automatically on boot, also enable the systemd service by running this command:
.. code-block:: bash
sudo systemctl enable docker
.. code-block:: bash
sudo systemctl enable docker
#. Finally, verify :command:`docker` has been installed by running this
command and checking the version output for both *client* and *server*:
command and checking the version output for both *client* and *server*:
.. code-block:: bash
.. code-block:: bash
sudo docker version
Congratulations! At this point, you have a working installation of Docker* on |CL| and are ready to start using container images on your system.
|
|
|
sudo docker version
Congratulations! At this point, you have a working installation of Docker
on |CL|. You are ready to start using container images on your system.
Integration with Clear Containers (optional)
============================================
********************************************
`Clear Containers`_,
is an open source project
aiming to increase security of containers by using a
hardware-backed virtual machine container runtime,
instead of software namespace containers
that are provided by the standard Docker *runc* runtime.
`Clear Containers`_, is an open source project aiming to increase security
of containers by using a hardware-backed virtual machine container runtime,
instead of software namespace containers that are provided by the standard
Docker *runc* runtime.
The Docker* package from |CL| will automatically use the *cc-runtime* required for Clear Containers if it is available on your Clear Linux system.
The Docker package from |CL| will automatically use the *cc-runtime*
required for Clear Containers if it is available on your Clear Linux system.
#. You can take advantage of Clear Containers in |CL| by simply installing the *containers-virt* bundle by running the command below:
#. To take advantage of Clear Containers in |CL|, install the
*containers-virt* bundle by running this command:
.. code-block:: bash
.. code-block:: bash
sudo swupd bundle-add containers-virt
sudo swupd bundle-add containers-virt
#. Restart the Docker* daemon through systemd manager by running this command:
#. Restart the Docker daemon through systemd manager by running this command:
.. code-block:: bash
.. code-block:: bash
sudo systemctl restart docker
sudo systemctl restart docker
#. After restarting, the Docker* daemon
will seamlessly use Clear Containers to launch containers.
You can see the runtime has changed to :command:`cc-runtime`
by running this command:
#. After restarting, the Docker daemon will seamlessly use Clear Containers
to launch containers. You can see the runtime has changed to
:command:`cc-runtime` by running this command:
.. code-block:: bash
.. code-block:: bash
sudo docker info | grep Runtime
sudo docker info | grep Runtime
#. You should see the following output
indicating the *cc-runtime* is the Default Runtime:
#. You should see the following output indicating the *cc-runtime* is the
Default Runtime:
.. code-block:: bash
.. code-block:: console
Runtimes: cc-runtime runc
Default Runtime: cc-runtime
Runtimes: cc-runtime runc
Default Runtime: cc-runtime
Congratulations! At this point, you have successfully replaced the default container runtime with Clear Containers.
|
|
|
Congratulations! At this point, you have successfully replaced the default
container runtime with Clear Containers.
.. note::
The proceeding sections of this tutorial are standard to Docker* setup and configuration.
If you are familiar with Docker basics, you do not need to continue reading. The following sections are provided here for sake of completeness.
The proceeding sections of this tutorial are standard to Docker setup
and configuration. If you are familiar with Docker basics, you do not
need to continue reading. The following sections are provided here for
sake of completeness.
Additional Docker configuration
===============================
Additional Docker* daemon configuration done can be via a
configuration file typically located at :file:`/etc/docker/daemon.json` .
|CL| features a `stateless system`_ so the configuration file :file:`daemon.json` will *NOT* exist by default.
*******************************
Perform additional Docker daemon configuration via a configuration file
typically located at :file:`/etc/docker/daemon.json`. |CL| features a
`stateless system`_ so the configuration file :file:`daemon.json` does *NOT*
exist by default.
#. Create the :file:`daemon.json` by running this command:
.. code-block:: bash
.. code-block:: bash
touch /etc/docker/daemon.json
touch /etc/docker/daemon.json
Refer to the `Docker* documentation on daemon configuration`_ for the
full list of available configuration options and examples.
.. note::
Refer to the `Docker documentation on daemon configuration`_ for the
full list of available configuration options and examples.
#. Once you've made any required changes, be sure to restart the
Docker* daemon through systemd manager by running this command:
Docker daemon through systemd manager by running this command:
.. code-block:: bash
.. code-block:: bash
sudo systemctl restart docker
sudo systemctl restart docker
Pulling and Running an image from Docker Hub
********************************************
|
|
|
`Docker Hub`_ is a publically available container image repository which
comes preconfigured with Docker. In the example below we will pull and run
an the official Docker image for nginx, an open source reverse proxy server.
#. First, pull a container image from Docker Hub using the
:command:`docker pull` command. Download the latest nginx Docker
container image by running this command:
Pulling and Running an image from Docker* Hub
=============================================
`Docker* Hub`_ is a publically available container image repository
which comes preconfigured with Docker*.
In the example below we will pull and run an the official Docker image for nginx, an open source reverse proxy server.
.. code-block:: bash
sudo docker pull nginx
#. First, Pull a container image from Docker* Hub using the :command:`docker pull` command. Download the latest nginx Docker container image by running this command:
#. Create and launch a new container using the :command:`docker run`
command. Launch a nginx container by running this command:
.. code-block:: bash
.. code-block:: bash
sudo docker pull nginx
sudo docker run --name test-nginx -d -p 8080:80 nginx
#. Create and launch a new container using the :command:`docker run` command.
Launch a nginx container by running this command:
.. code-block:: bash
sudo docker run --name test-nginx -d -p 8080:80 nginx
.. note::
.. note::
Below is an explaination of switches used in the command above. For detailed :command:`docker run` switches and syntax, refer to the `Docker* Documentation`_ .
Below is an explaination of switches used in the command above. For
detailed :command:`docker run` switches and syntax, refer to the
`Docker Documentation`_ .
* The :option:`--name` switch lets you provide a friendly name to target the container for future operations
* The :option:`--name` switch lets you provide a friendly name to
target the container for future operations
* The :option:`-d` switch launches the container in the background
* The :option:`-d` switch launches the container in the background
* The :option:`-p` switch allows the container's HTTP port (80) to be accessible from the Clear Linux host on port 8080
* The :option:`-p` switch allows the container's HTTP port (80) to be
accessible from the Clear Linux host on port 8080
#. You can access the Welcome to Nginx! splash page running in the container
by browsing to http://127.0.0.1:8080 or by running this :command:`curl`
command from your Clear Linux machine:
#. You can access the Welcome to Nginx! splash page running in the container by browsing to http://127.0.0.1:8080 or by running this :command:`curl` command from your Clear Linux machine:
.. code-block:: bash
curl 127.0.0.1:8080
.. code-block:: bash
curl 127.0.0.1:8080
#. Finally, stop and delete the nginx container by running the
:command:`docker stop` and :command:`docker rm` commands.
.. code-block:: bash
.. code-block:: bash
sudo docker stop test-nginx
sudo docker rm test-nginx
sudo docker stop test-nginx
sudo docker rm test-nginx
Congratulations! At this point, you have successfully pulled a nginx
container image from `Docker Hub`_ and ran an example container.
Congratulations! At this point, you have successfully pulled a nginx container image from `Docker* Hub`_ and ran an example container.
|
|
|
Creating a Docker swarm cluster
*******************************
Creating a Docker* swarm cluster
================================
Clusters of Docker* hosts are referred to as swarms.
Clusters of Docker hosts are referred to as swarms.
The process in this tutorial can be repeated to install Docker*
on multiple Clear Linux hosts with the intent to form a Docker* swarm cluster.
The process in this tutorial can be repeated to install Docker on multiple
Clear Linux hosts with the intent to form a Docker swarm cluster.
The `Docker* documentation on swarm key concepts`_ and
`Docker* documentation on creating a swarm`_ can be referenced
The `Docker documentation on swarm key concepts`_ and
`Docker documentation on creating a swarm`_ can be referenced
for further instructions on setting up a swarm.
Also see:
=========
* `Docker* Home`_
* `Docker* Documentation`_
* `Docker* Hub`_
---------
* `Docker Home`_
* `Docker Documentation`_
* `Docker Hub`_
* `Clear Containers`_
.. _`unique features`: https://clearlinux.org/features
.. _`|CL| image on Docker* Hub`: https://hub.docker.com/_/clearlinux/
.. _`Clear Linux image on Docker Hub`: https://hub.docker.com/_/clearlinux/
.. _`building a custom Clear Linux docker image`: https://clearlinux.org/documentation/clear-linux/guides/network/custom-clear-container
.. _`Docker* proxy instructions`: https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
.. _`Docker proxy instructions`: https://docs.docker.com/config/daemon/systemd/#httphttps-proxy
.. _`bundles`: https://clearlinux.org/documentation/clear-linux/concepts/bundles-about#related-concepts
.. _`stateless system`: https://clearlinux.org/features/stateless
.. _`Docker* documentation on daemon configuration`: https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
.. _`Docker documentation on daemon configuration`: https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file
.. _`Clear Containers`: https://github.com/clearcontainers
.. _`Docker* Home`: https://www.docker.com/
.. _`Docker* Documentation`: https://docs.docker.com/
.. _`Docker* Hub`: https://hub.docker.com/
.. _`Docker* documentation on swarm key concepts`: https://docs.docker.com/engine/swarm/key-concepts/
.. _`Docker* documentation on creating a swarm`: https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/
.. _`Docker Home`: https://www.docker.com/
.. _`Docker Documentation`: https://docs.docker.com/
.. _`Docker Hub`: https://hub.docker.com/
.. _`Docker documentation on swarm key concepts`: https://docs.docker.com/engine/swarm/key-concepts/
.. _`Docker documentation on creating a swarm`: https://docs.docker.com/engine/swarm/swarm-tutorial/create-swarm/
@@ -12,6 +12,7 @@ specific |CLOSIA| use cases.
wordpress
flatpak/flatpak
machine-learning/machine-learning
docker/docker
azure/azure
multi-boot/multi-boot
hadoop