******************
Lab 3: Overview
******************
.. contents:: Table of Contents
Let's recap what we have learned over the last two weeks:
1. We explored SaaS products that are self-hosted alternatives to
commercial products
- |Rocket.Chat| has similar functionality to |Slack|
- |Nextcloud| stores files in the cloud
- |Wordpress| is blogging and website building software
#. We configured a VPS to host a webpage using Nginx
- One server that runs a single web application
#. We configured a packaged product, Rocket.Chat, to run independently
on a non-standard port because port 80 was already in use by Nginx
- One server that runs multiple applications using a pre-configured package
#. We configured Nginx as a reverse-proxy to redirect port 80 traffic to
internal ports (3000, for example).
- The process is transparent to the user of the site.
- This method allows us to run different applications on the same VPS.
#. We configured two Docker projects.
- The first Docker project used `docker run` to pull the image from
Docker Hub directly and then run it with minimal configurations.
This project was all-inclusive, like Rocket.Chat.
- The second project had two components (web and database), each
running in a different container.
#. Each step is distributing more of the processing power.
- We have gone from one project per VPS to a self-contained package
installer that runs in isolation to a project that runs different
components separately.
.. |Slack| raw:: html
Slack
.. |Rocket.Chat| raw:: html
Rocket.Chat
.. |Nextcloud| raw:: html
Nextcloud
.. |Wordpress| raw:: html
Wordpress
Containers
===========
Physical space in data centers and the processing power of the hardware
is finite, but resources go unused. One way to maximize resources is
to virtualize the technology to use the same hardware. Instead of
running one operating system (OS) per server, each server could
run a base operating system with many virtualized OSs, with each
virtual OS having `n` number of microservices or larger systems running
in their own virtualized OS.
We will focus on containers, which visualize the OS instead of
virtualizing the underlying hardware as a virtual machine does.
Containers are lightweight and have a small footprint. They can
start up very quickly. Linux distributions, such as |Alpine Linux|,
are built for containers. Alpine Linux has |a base footprint of just 5MB|,
whereas Ubuntu and CentOS are around 180MB. The `hello world`
Docker image that ran last week has a size of 1.84kB!
Run ``docker images`` to view the size of the images on your VPS.
**Resources**
+ |What are the levels of virtualization?|
+ |What’s the Diff: VMs vs Containers|
+ |What are microservices?|
+ |Docker Tutorial: Containers, VMs, and Docker for Beginners|
.. |What are the levels of virtualization?| raw:: html
What are the levels of virtualization?
.. |What’s the Diff: VMs vs Containers| raw:: html
What’s the Diff: VMs vs Containers
.. |What are microservices?| raw:: html
What are microservices?
.. |Docker Tutorial: Containers, VMs, and Docker for Beginners| raw:: html
Docker Tutorial: Containers, VMs, and Docker for Beginners
.. |Alpine Linux| raw:: html
Alpine Linux
.. |a base footprint of just 5MB| raw:: html
a base footprint of just 5MB
Goals for Lab 3
===================
We will explore how to containerize applications so that we can run
a service using multiple smaller containers.
During this lab, you will:
#. You will assemble two web applications using different containers
to decentralize the project using Docker Compose.
- Wordpress
- Nextcloud
#. You will learn how to separate the data from the web application.
#. You will configure a memory caching service, which is a core
technology to cloud and distributed computing.
.. admonition:: Source & license
:class: note
Reproduced **verbatim, without modification** from
`© 2022, BilimEdtech Labs `__,
licensed under
`Creative Commons Attribution 4.0 International (CC BY 4.0) `__.
Source page:
https://labs.bilimedtech.com/cloud-computing/3/overview.html
See :doc:`LICENSE <../../LICENSE_edtech>` for the full license text.