<commit_before>\section{Intorduction to Docker}\label{intorduction-to-docker}

\subsection{Topics Covered and Learning
Outcome}\label{topics-covered-and-learning-outcome}

\begin{itemize}
\tightlist
\item
  What is Docker?
\item
  What are containers?
\item
  Components in Docker
\item
  Run an example with Docker
\item
  Gain practical experience with Docker

  \begin{itemize}
  \tightlist
  \item
    docker installation
  \item
    docker hello world
  \end{itemize}
\end{itemize}

\subsection{What is Docker?}\label{what-is-docker}

Docker is the company driving the container movement and the only
container platform provider to address every application across the
hybrid cloud. Today's businesses are under pressure to digitally
transform but are constrained by existing applications and
infrastructure while rationalizing an increasingly diverse portfolio of
clouds, datacenters and application architectures. Docker enables true
independence between applications and infrastructure and developers and
IT ops to unlock their potential and creates a model for better
collaboration and innovation.

\begin{figure}[htbp]
\centering
\includegraphics{images/container-1.png}
\caption{Docker Containers}
\end{figure}

Image Source
{[}https://www.docker.com/sites/default/files/Package\%20software\%40x2.png){]}

\subsection{Install Docker}\label{install-docker}

\subsubsection{Install Docker for OSX}\label{install-docker-for-osx}

In order to install on OSX, you need to do the following steps:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
  Download \texttt{Docker.dmg} file from
  \href{}{https://docs.docker.com/docker-for-mac/install/\#download-docker-for-mac}
\item
  Start \texttt{Docker.app}
\end{enumerate}

\subsubsection{Install Docker for Windows
10}\label{install-docker-for-windows-10}

\href{https://download.docker.com/win/stable/Docker\%20for\%20Windows\%20Installer.exe}{Download
docker}

\href{https://download.docker.com/win/stable/DockerToolbox.exe}{Download
docker toolbox}

Move these downloaded files to a directory as shown below.

\begin{verbatim}
mkdir C:\Users\<username>\Documents\cloudmesh
\end{verbatim}

Replace with the username in your Windows 10 account

Example : Neo

\begin{verbatim}
mkdir C:\Users\Neo\Documents\cloudmesh
\end{verbatim}

Place all the downloaded exe files in the cloudmesh directory we created
earlier. First do the Docker installation and then do the Docker Toolbox
installation. Then you can double click the exe file and run it for
installation.

When you are doing the installation, tic mark the descriptions in the
installation saying to create shortcuts in your desktop. This way you
can load all the tools in the desktop as shortcuts.

For running you will need the ``Docker Quickstart Terminal'' application
and it will load all the requirements and provide a terminal window in
which you can execute docker commands.

Once the terminal is loaded, it will show something like following :

\begin{verbatim}
$ <username>@<yourpc> MINGW64 ~
\end{verbatim}

For instance

\begin{verbatim}
$neo@neo MINGW64 ~
\end{verbatim}

\subsubsection{Install Docker Commuinity Edition for
Ubuntu}\label{install-docker-commuinity-edition-for-ubuntu}

In order to instal Docker community edition for Ubuntu, you first have
to setup the repository where it is located. This can be achieved as
follows:

\begin{verbatim}
$ sudo apt-get update

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ sudo apt-key fingerprint <KEY>

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
\end{verbatim}

Now you have configured the repository location, you can install it
after you haved updated the operating system. The update and install is
done as follows:

\begin{verbatim}
$ sudo apt-get update
$ sudo apt-get install docker-ce
$ sudo apt-get update
\end{verbatim}

To check if the Docker works, please follow the following command.

\begin{verbatim}
$ sudo docker run hello-world
\end{verbatim}

\section{Introduction to Kubernetes}\label{introduction-to-kubernetes}

\subsection{Topics Covered and Learning
Outcome}\label{topics-covered-and-learning-outcome-1}

\begin{itemize}
\tightlist
\item
  What is Kubernetes?
\item
  What are containers?
\item
  Cluster components in Kubernetes
\item
  Basic Units in Kubernetes
\item
  Run an example with Minikube
\item
  Interactive online tutorial
\item
  Have a solid understanding of Containers and Kubernetes
\item
  Understand the CLuster components of Kubernetes
\item
  Understand the terminology of Kubernetes
\item
  Gain practical experience with kubernetes
\item
  With minikube
\item
  With an interactive online tutorial
\end{itemize}

\subsection{What is Kubernetes?}\label{what-is-kubernetes}

Kubernetes is an open-source platform designed to automate deploying,
scaling, and operating application containers.
{[}\href{https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/}{1}{]}

With Kubernetes, you can:

\begin{itemize}
\tightlist
\item
  Deploy your applications quickly and predictably.
\item
  Scale your applications on the fly.
\item
  Roll out new features seamlessly.
\item
  Limit hardware usage to required resources only.
\item
  Run applications in public and private clouds.
\end{itemize}

Kubernetes is

\begin{itemize}
\tightlist
\item
  Portable: public, private, hybrid, multi-cloud
\item
  Extensible: modular, pluggable, hookable, composable
\item
  Self-healing: auto-placement, auto-restart, auto-replication,
  auto-scaling
\end{itemize}

\subsection{What are containers?}\label{what-are-containers}

\begin{figure}[htbp]
\centering
\includegraphics{images/why_containers.svg}
\caption{Kubernetes Containers}
\end{figure}

Image source:
{[}https://d33wubrfki0l68.cloudfront.net/e7b766e0175f30ae37f7e0e349b87cfe2034a1ae/3e391/images/docs/why\_containers.svg{]}

\subsection{Basic Units}\label{basic-units}

\subsubsection{Pods}\label{pods}

A pod (as in a pod of whales or pea pod) is a group of one or more
containers (such as Docker containers), with shared storage/network, and
a specification for how to run the containers. A pod's contents are
always co-located and co-scheduled, and run in a shared context. A pod
models an application-specific ``logical host'' - it contains one or
more application containers which are relatively tightly coupled --- in
a pre-container world, they would have executed on the same physical or
virtual machine.

\subsubsection{Services}\label{services}

Service is an abstraction which defines a logical set of Pods and a
policy by which to access them - sometimes called a micro-service. The
set of Pods targeted by a Service is (usually) determined by a Label
Selector.

\subsubsection{Deployments}\label{deployments}
<commit_msg>fix:dev: image referencing issue fixed<commit_after>\section{Intorduction to Docker}\label{intorduction-to-docker}

\subsection{Topics Covered and Learning
Outcome}\label{topics-covered-and-learning-outcome}

\begin{itemize}
\tightlist
\item
  What is Docker?
\item
  What are containers?
\item
  Components in Docker
\item
  Run an example with Docker
\item
  Gain practical experience with Docker

  \begin{itemize}
  \tightlist
  \item
    docker installation
  \item
    docker hello world
  \end{itemize}
\end{itemize}

\subsection{What is Docker?}\label{what-is-docker}

Docker is the company driving the container movement and the only
container platform provider to address every application across the
hybrid cloud. Today's businesses are under pressure to digitally
transform but are constrained by existing applications and
infrastructure while rationalizing an increasingly diverse portfolio of
clouds, datacenters and application architectures. Docker enables true
independence between applications and infrastructure and developers and
IT ops to unlock their potential and creates a model for better
collaboration and innovation.

\begin{figure}[htbp]
\centering
\includegraphics[width=0.7\textwidth]{docker-container.png}
\caption{Docker Containers}
\end{figure}

Image Source
{[}https://www.docker.com/sites/default/files/Package\%20software\%40x2.png){]}

\subsection{Install Docker}\label{install-docker}

\subsubsection{Install Docker for OSX}\label{install-docker-for-osx}

In order to install on OSX, you need to do the following steps:

\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
  Download \texttt{Docker.dmg} file from
  \href{}{https://docs.docker.com/docker-for-mac/install/\#download-docker-for-mac}
\item
  Start \texttt{Docker.app}
\end{enumerate}

\subsubsection{Install Docker for Windows
10}\label{install-docker-for-windows-10}

\href{https://download.docker.com/win/stable/Docker\%20for\%20Windows\%20Installer.exe}{Download
docker}

\href{https://download.docker.com/win/stable/DockerToolbox.exe}{Download
docker toolbox}

Move these downloaded files to a directory as shown below.

\begin{verbatim}
mkdir C:\Users\<username>\Documents\cloudmesh
\end{verbatim}

Replace with the username in your Windows 10 account

Example : Neo

\begin{verbatim}
mkdir C:\Users\Neo\Documents\cloudmesh
\end{verbatim}

Place all the downloaded exe files in the cloudmesh directory we created
earlier. First do the Docker installation and then do the Docker Toolbox
installation. Then you can double click the exe file and run it for
installation.

When you are doing the installation, tic mark the descriptions in the
installation saying to create shortcuts in your desktop. This way you
can load all the tools in the desktop as shortcuts.

For running you will need the ``Docker Quickstart Terminal'' application
and it will load all the requirements and provide a terminal window in
which you can execute docker commands.

Once the terminal is loaded, it will show something like following :

\begin{verbatim}
$ <username>@<yourpc> MINGW64 ~
\end{verbatim}

For instance

\begin{verbatim}
$neo@neo MINGW64 ~
\end{verbatim}

\subsubsection{Install Docker Commuinity Edition for
Ubuntu}\label{install-docker-commuinity-edition-for-ubuntu}

In order to instal Docker community edition for Ubuntu, you first have
to setup the repository where it is located. This can be achieved as
follows:

\begin{verbatim}
$ sudo apt-get update

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ sudo apt-key fingerprint 0EBFCD88

$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
\end{verbatim}

Now you have configured the repository location, you can install it
after you haved updated the operating system. The update and install is
done as follows:

\begin{verbatim}
$ sudo apt-get update
$ sudo apt-get install docker-ce
$ sudo apt-get update
\end{verbatim}

To check if the Docker works, please follow the following command.

\begin{verbatim}
$ sudo docker run hello-world
\end{verbatim}

\section{Introduction to Kubernetes}\label{introduction-to-kubernetes}

\subsection{Topics Covered and Learning
Outcome}\label{topics-covered-and-learning-outcome-1}

\begin{itemize}
\tightlist
\item
  What is Kubernetes?
\item
  What are containers?
\item
  Cluster components in Kubernetes
\item
  Basic Units in Kubernetes
\item
  Run an example with Minikube
\item
  Interactive online tutorial
\item
  Have a solid understanding of Containers and Kubernetes
\item
  Understand the CLuster components of Kubernetes
\item
  Understand the terminology of Kubernetes
\item
  Gain practical experience with kubernetes
\item
  With minikube
\item
  With an interactive online tutorial
\end{itemize}

\subsection{What is Kubernetes?}\label{what-is-kubernetes}

Kubernetes is an open-source platform designed to automate deploying,
scaling, and operating application containers.
{[}\href{https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/}{1}{]}

With Kubernetes, you can:

\begin{itemize}
\tightlist
\item
  Deploy your applications quickly and predictably.
\item
  Scale your applications on the fly.
\item
  Roll out new features seamlessly.
\item
  Limit hardware usage to required resources only.
\item
  Run applications in public and private clouds.
\end{itemize}

Kubernetes is

\begin{itemize}
\tightlist
\item
  Portable: public, private, hybrid, multi-cloud
\item
  Extensible: modular, pluggable, hookable, composable
\item
  Self-healing: auto-placement, auto-restart, auto-replication,
  auto-scaling
\end{itemize}

\subsection{What are containers?}\label{what-are-containers}

\begin{figure}[htbp]
\centering
\includegraphics[width=0.8\textwidth]{why_containers.png}
\caption{Kubernetes Containers}
\end{figure}

Image source:
{[}https://d33wubrfki0l68.cloudfront.net/e7b766e0175f30ae37f7e0e349b87cfe2034a1ae/3e391/images/docs/why\_containers.svg{]}

\subsection{Basic Units}\label{basic-units}

\subsubsection{Pods}\label{pods}

A pod (as in a pod of whales or pea pod) is a group of one or more
containers (such as Docker containers), with shared storage/network, and
a specification for how to run the containers. A pod's contents are
always co-located and co-scheduled, and run in a shared context. A pod
models an application-specific ``logical host'' - it contains one or
more application containers which are relatively tightly coupled --- in
a pre-container world, they would have executed on the same physical or
virtual machine.

\subsubsection{Services}\label{services}

Service is an abstraction which defines a logical set of Pods and a
policy by which to access them - sometimes called a micro-service. The
set of Pods targeted by a Service is (usually) determined by a Label
Selector.

\subsubsection{Deployments}\label{deployments}

{'fraction_non_alphanumeric': 0.08436582396333166, 'fraction_numerical': 0.008880613048771755, 'mean_word_length': 4.687983706720978, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 10, 'https://': 16, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 20, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3950255', 'n_tokens_mistral': 4332, 'n_tokens_neox': 4075, 'n_words': 1482}