Ccs335-Cloud Lab Manul
Ccs335-Cloud Lab Manul
COURSE OBJECTIVES:
To understand the principles of cloud architecture, models and infrastructure.
To understand the concepts of virtualization and virtual machines.
To gain knowledge about virtualization Infrastructure.
To explore and experiment with various Cloud deployment environments.
To learn about the security issues in the cloud environment.
LIST OF EXPERIMENTS
1. Install Virtualbox/VMware/ Equivalent open source cloud Workstation with different flavours of Linux
or Windows OS on top of windows 8 and above.
2. Install a C compiler in the virtual machine created using a virtual box and executes Simple Programs.
3. Install Google App Engine. Create a hello world app and other simple web applications using
python/java.
4. Use the GAE launcher to launch the web applications.
5. Simulate a cloud scenario using CloudSim and run a scheduling algorithm that is not present in
CloudSim.
6. Find a procedure to transfer the files from one virtual machine to another virtual machine. 7. Install
Hadoop single node cluster and run simple applications like wordcount.
8. Creating and Executing Your First Container Using Docker.
9. Run a Container from Docker Hub
TOTAL: 30 PERIODS
SOFTWARE AND HARDWARE REQUIREMENTS:
PO’s PSO’s
CO’s
1 2 3 4 5 6 7 8 9 10 11 12 1 2 3
1 3 2 1 1 1 - - - 2 3 1 3 2 1 3
2 3 1 2 2 1 - - - 1 2 1 3 2 2 1
3 2 3 2 3 1 - - - 3 1 1 3 1 1 1
4 1 2 3 3 3 - - - 3 3 1 2 1 3 3
5 2 3 3 1 3 - - - 2 2 1 2 2 2 3
AVg. 2.2 2.2 2.2 2 1.8 - - - 2.2 2.2 1 2.6 1.6 1.8 2.2
1-low,2-medium,-high,‘-'-nocorrelation
[Link].1 Install Virtualbox/VMware Workstation with different flavours of linux
or windows OS on top of windows7 or 8.
Date:
AIM:
To find procedure to run the virtual machine of different configuration and check
how manyvirtual machines can be utilized at particular time.
PROCEDURE:
Open Oracle virtual box manager and click create new -> virtual machine.
Step 2:
Provide a name for the virtual machine and select the hard disk size for the virtualmachine.
Select the storage size as Dynamically allocated memory size and click [Link]
1
2
Step 3:
Select the iso file of the virtual OS Ubuntu and click Start.
Step 4:
The virtual OS Ubuntu is opened successfully. Now type “gedit” in the search
box to open text editor in Ubuntu.
3
Step 5:
Type your desired C program in text editor and save it with the extension (.c).
Step 6:
4
Step 7:
PROCEDURE:
Step1:
Open Oracle virtual box manager and click create new -> virtual machine. Provide and name
for the operating system and select the memory size to be occupied in memory.
5
Step 2:
Select the iso file of the virtual OS Windows7 and click Start.
6
Step 3:
Select the language to use in the Operating System and click Install Now.
7
Step 4:
Select the type of installation as Custom for new installation and allocate Diskspace
according to your convenience. Click Next to start the installation.
8
Step 5:
9
Step 6:
Provide a user name and password(optional) to gain access over the OS.
10
Step 7:
Set the time and date for the new Operating System.
Step 8:
Thus the new Operating System Windows7 will be opened as the virtual machine.
11
RESULT:
Thus the procedure to run different virtual machines on a single system using Oracle Virtual Box is studied
and implemented successfully.
12
[Link].2 Install a C compiler in the virtual machine created
Date: using virtual box andexecute Simple Programs.
AIM:
To find a procedure to use the C compiler in the virtual machine and execute asample
program.
PROCEDURE:
Step 1:
Open the virtual machine in which you want to run the C program.
Step 2:
The text editor used by the Ubuntu Operating System is the [Link] can
be opened by using the search option by typing gedit in it.
13
Step 3:
Type your desired C program in the text editor and save it as a C file using theExtension
14
Step 4:
Step 5:
RESULT:
Thus the procedure to use the C Compiler in the virtual machine and execute a sample program
is implemented sucessfully.
16
[Link].3 Installing and Running the Google App Engine
Date: On Windows
AIM:
PROCEDURE:
PROCEDURE:
Install the latest Cloud SDK version (303.0.0)
Step 1: Download the Cloud SDK installer.
(New-Object
Alternatively, open a PowerShell terminal and run the following PowerShell commands.
[Link]).DownloadFile("[Link]
nnels/ra
pid/[Link]", "$env:Temp\[Link]")
& $env:Temp\[Link]
Step 2: Launch the installer and follow the prompts. The installer is signed by Google LLC.
Cloud SDK requires Python. Supported versions are 3.5 to 3.7, and 2.7.9 or higher.
The installer will install all necessary dependencies, including the needed Python version. While
Cloud SDK currently uses Python 2 by default, you can use an existing Python installation if
necessary by unchecking the option to 'Install Bundled Python'. .
Note: Cloud SDK uses Python 2 by default, but will soon move to Python 3 (run gcloud topic
startup for exclusions and more information on configuring your Python interpreter to use a
different version). Consider upgrading to Python 3 to avoid disruption in the future.
17
OUTPUT:
18
The installer starts a terminal window and runs the gcloud init command.
Step 4: The default installation does not include the App Engine extensions required to deploy
an application using gcloud commands. These components can be installed using the Cloud SDK
component manager.
Optional: Enable accessibility features
For a more streamlined screen reader experience, the gcloud command-line tool comes with an
accessibility/screen_reader property.
gcloud config set accessibility/screen_reader true
Boxed tables drawn with ASCII characters: Boxed tables are the default output of many list
commands. Instead of being drawn with Unicode, they will be rendered using ascii characters.
Also, consider using the --format flag to define your own format.
To enable these accessibility features, run:
Additional resources
Alternate documentation experiences
To search the gcloud CLI reference docs for a keyword or command, use gcloud help.
This runs a search for all commands with help text matching the given argument or
arguments.
To adjust the verbosity level of a command, you can set the gcloud CLI-wide flag --
verbosity with either debug, info, warning, error, critical, or none.
For list commands, you can further refine your output by using the --limit flag to set a
maximum number of resources to list. You can also use the --page-size flag to define the
number of resources per page if the service lists output in pages. To sort, use the --sort-
by flag with the relevant field to sort.
19
20
To structure and produce more meaningful output, you can use the format, filter and
projection flags to fine-tune your output.
If you'd like to define just the format of your output, use the --format flag to
produce a tabulated or flattened version of your output (for interactive display) or
a machine-readable version of the output (json, csv, yaml, value).
To format a list of keys that select resource data values, use projections.
To further refine your output to a criteria you'd like to define, use the --
filter flag.
Filing feedback
To file a bug, provide feedback, or send suggestions, use gcloud feedback to help
improve the gcloud command-line tool experience. This command will open the public issue
tracker in a browser window.
You can also directly log issues using issue tracker. Be sure to toggle the 'Type' field to
reflect the nature of the issue you're filing (Bug, Feature Request, etc.) to help make responses
more efficient.
Login to google account and verify the account with google for the successful
authentication.
Download webapp2 module from [Link]
21
runtime: python3 api_version: 1
threadsafe: true
handlers:
-url: /
script: [Link]
Run the gcloud prompt and give Yes option to proceed further.
Install gcloud components using the command
gcloud components install cloud-datastore-emulator
RESULT:
Thus the Google App Engine insatlled on WIndows successfully and hello World app and other
simple web application using python / java executed sucessfully.
22
[Link] : 4 Google App Engine Launch the Web Applications
Date :
Aim:
To Use GAE launcher to launch the web applications
Procedure:
2. Download, install, and then initialize the Cloud SDK. If you already have the Cloud SDK
installed, run the gcloud components update command to update to the latest
release.
The Cloud SDK provides you the gcloud command-line tooling for deploying and
managing your apps.
By downloading, you agree to be bound by the Terms that govern use of the Cloud SDK
for App Engine.
Note: Avoid using a package manager such as apt or yum to install the Cloud SDK.
Install your preferred tooling or framework, for example you can use any of the following
frameworks to develop your Python 3 app:
Flask
23
Django
Pyramid
Bottle
[Link]
Tornado
www/: Directory to store all of your static files, such as HTML, CSS, images, and
JavaScript.
The [Link] file is a configuration file that tells App Engine how to map URLs to your static
files. In the following steps, you will add handlers that will load www/[Link] when someone
visits your website, and all static files will be stored in and called from the www directory.
1. Create a directory that has the same name as your project ID. You can find your project
ID in the Console.
24
2. In directory that you just created, create a file named [Link].
3. Edit the [Link] file and add the following code to the file:
Creating the [Link] file
Create an HTML file that will be served when someone navigates to the root page of your
website. Store this file in your www directory.
<html>
<head>
<title>Hello, world!</title>
<linkrel="stylesheet"type="text/css"href="/css/[Link]">
</head>
<body>
<h1>Hello, world!</h1>
<p>
This is a simple static HTML file that will be served from Google
App
Engine.
</p>
</body>
</html>
Optional flags:
Include the --project flag to specify an alternate Cloud Console project ID to what you
initialized as the default in the gcloud tool. Example: --project [YOUR_PROJECT_ID]
Include the -v flag to specify a version ID, otherwise one is generated for you. Example: -
v [YOUR_VERSION_ID]
To learn more about deploying your app from the command line, see Deploying a Python 2 App.
25
viewing your application
No matter what platform you build products on, there is always some housekeeping stuff
you need to put in place before you can hit the ground running. And deploying apps within the
Google App Engine is no exception.
This will allow you to fork apps onto your local machine, make changes (edit and
develop the app), and deploy your app back to the cloud.
After downloading the SDK, launch the App Engine launcher, go to Edit -> Preferences
and make sure you set the path for where you installed Python in step 1 above.
Set the Python path in Google App Engine launcher That’s all you need. Your local machine
should now be ready to build webapps.
This is often the most confusing part of the entire setup. Things you should know when
you sign-up:
26
3. You will need to add a credit card to sign-up (for verification purposes).
4. You will not be charged during the sign-up process.
5. You will not be charged during the trial period as long as you do not cross the credit limit
offered.
The next step is to create a new Python project that you can work on. Follow the
screenshots below to create a new project.
Hit the create button and Google should take a few minutes to set up all that is necessary for your
newly created app.
The next step in the process is to fork the app on your local machine. This will allow you to
make changes to the app locally and deploy it whenever you wish to.
Hit the create button, and you should see your app listed on the window that follows. You should
also check that you now see some files in your local storage (the directory you chose in the
screenshot above) after this step.
Step 5 : Run the app locally
Before you go ahead and make some changes to the app, it is important to check whether
or not you have executed all the above steps correctly. This can be done by simply running the
28
app locally.
Select the app and hit the run button on the window.
Wait for a few seconds until you can hit the Browse button. Once the Browse button
becomes clickable, click it. This should take you to the browser, and you should see the hello
world text appear in your browser window. Alternatively, you can manually go to the browser
and use the port specified to access the app.
As long as you see the above screen, you are all set.
It is finally time to look at the lines of code which are running this webapp. Open your
app folder in the text editor of your choice. I recommend Sublime text or VS Code. However,
feel free to choose the one you prefer.
This file is a basic markup file that stores information (some metadata) about the app. It is
important to note the following crucial parts of the file.
1. application
This is the project ID which you should never change. This is the unique identifier for the app
3. libraries
This is where you can include external libraries to use within the webapp
[Link]
This is the homepage of the app (as discussed above). Note that the hello world text in the
browser window (step 5) is due to the code you see highlighted below.
No hello world app is ever complete without the developer changing the hello world text
29
to something else just to make sure that everything happening behind the scenes is working as it
should.
Go ahead and change the text in the above screenshot to something else.
Save the changes, go to the browser and refresh the page. You should see the page with the text
“MEOW” displayed.
Finally, it is time to deploy your changes to the cloud to make them globally accessible
via a URL. Go to the App Engine launcher, select the app, and hit the Deploy button.
Step 8 : Misc
Congratulations, you’ve finally gotten your first Python webapp deployed on the Google App
Engine. Here are some other points which you may find useful.
1. Jinja 2 is an amazing front end templating library for Python that can do some cool stuff,
such as passing objects form Python to HTML, using for loops, if conditions, and so on
directly out of the box
2. Here’s a very useful Udacity course on web development that I have personally found
quite resourceful
3. Viewing the logs while running your webapp can be handy to debug and also discover
some bugs on the fly.
30
OUTPUT:
31
Result :
32
[Link] : 5 Simulate a cloud scenario using CloudSim and run a
Date : scheduling algorithm that is not present in CloudSim.
Aim :
To Simulate a cloud scenario using CloudSim and run a scheduling algorithm that is not
present in CloudSim
Introduction:
CloudSim
A Framework for modeling and simulation of Cloud Computing
Infrastructures and services
Originally built at the Cloud Computing Distributed Systems (CLOUDS)
Laboratory, The University of Melbourne, Australia
It is completely written in JAVA
Main Features of CloudSiM
o Modeling and simulation
o Data centre network topologies and message-passing applications
o Dynamic insertion of simulation elements
o Stop and resume of simulation
o Policies for allocation of hosts and virtual machines
Cloudsim – Essentials
JDK 1.6 or above [Link]
Eclipse 4.2 or above [Link]
Alternatively NetBeans[Link]
Up & Running with cloudsim guide: [Link]
Cloudsim-Directory structure
cloudsim/ -- top level CloudSim directory
docs/ -- CloudSim API Documentation
examples/ -- CloudSim examples
jars/ -- CloudSim jar archives
sources/ -- CloudSim source code
33
Cloudsim - Layered Architecture
34
o CloudInformationService
o CloudSim
o CloudSimTags
o SimEvent
o SimEntity
o CloudsimShutdown
o FutureQueue
o DefferedQueue
o Predicate and associative classes.
CloudSim Elements/Components
35
Procedure to import Eclipse, Cloudsim in your system
Step 1: Link to download Eclipse and download Eclipse for Windows 64bit into your Local
machine
[Link]
java-developers
Windows
36
Step 2: Download cloudsim-3.0.3 from git hub repository in your local machine
[Link]
Cloudsi
Step 3: Download commons-maths3-3.6.1 from git hub repository in your local machine
[Link]
Commons-
maths3-
[Link]
37
Step 4: Downloaded Eclipse, cloudsim-code-master and Apache Commons Math 3.6.1 in
your local machine and extract cloudsim-3.0.3 and Apache Commons Math 3.6.1
Downloaded
Step 5: First of all, navigate to the folder where you have unzipped the eclipse folder and
open [Link]
38
Step 6: Now within Eclipse window navigate the menu: File -> New -> Project, to open the
new project wizard
Step 7: A ‗New Project‗ wizard should open. There are a number of options displayed and
you have to find & select the ‗Java Project‗ option, once done click ‘Next‗
39
Step 8: Now a detailed new project window will open, here you will provide the project name
and the path of CloudSim project source code, which will be done as follows:
Step 9: Unselect the ‘Use default location’ option and then click on ‘Browse’ to open the path
where you have unzipped the Cloudsim project and finally click Next to set project settings.
40
Step 10: Make sure you navigate the path till you can see the bin, docs, examplesetc folder in
the navigation plane.
Step 11: Once done finally, click ‗Next„ to go to the next step i.e. setting up of project
settings
41
Step 12: Now open ‘Libraries’ tab and if you do not find [Link] (here ‘x’
means the minor version release of the library which could be 2 or greater) in the list then
simply click on ‗Add External Jar’ ([Link] will be included in the project
from this step)
Step 13: Once you have clicked on ‗Add External JAR’s‗ Open the path where you have
unzipped the commons-math binaries and select ‗[Link]„ and click on open.
42
Step 14: Ensure external jar that you opened in the previous step is displayed in the list and
then click on ‗Finish„ (your system may take 2-3 minutes to configure the project)
Step 15: Once the project is configured you can open the ‗Project Explorer‗and start exploring
the Cloudsim project. Also for the first time eclipse automatically start building the workspace
for newly configured Cloudsim project, which may take some time depending on the
configuration of the computer system.
Following is the final screen which you will see after Cloudsim is configured.
43
Step 16: Now just to check you within the ‗Project Explorer‗, you should navigate to the
‗examples‗ folder, then expand the package ‗[Link]‗ and double
click to open the ‗[Link]‗
44
Step 17: Now navigate to the Eclipse menu ‗Run ->Run‗ or directly use a keyboard
shortcut ‘Ctrl + F11’ to execute the ‗[Link]‗.
45
Step 18: If it is successfully executed it should be displaying the following type to output inthe
Result:
46
[Link] : 6 Find a procedure to transfer the files from one virtual machine to
another virtual machine.
Date :
Aim:
To procedure File Transfer in Client & Server using virtual machine
Steps:
Steps to perform File Transfer in Client & Server using virtual machine.
Step 1: Open a virtual machine to do file transfer.
Step 2: Write the java program for FTP Client and FTP Server.
Step 3: Run the program.
Source Code:
[Link]
import [Link].*;
import [Link].*;
import [Link].*;
public class
FTPClient
{
public static void main(String args[])throws IOException
{
try
{
int number;
Socket s=new Socket("[Link]",10087);
Scanner sc=new Scanner([Link]);
[Link]("Enter the file name:");
String fn=[Link]();
DataOutputStream dos=new DataOutputStream([Link]());
[Link](fn);
DataInputStream dis=new DataInputStream([Link]());
String input=(String)[Link]();
FileInputStream fis=new FileInputStream(input);
[Link]("Even Numbers in the" +fn+" are");
int i=0;
{ 47
while((i=[Link]())!=-1)
[Link]((char)i);
}
[Link]();
}
catch(Exception e){
[Link]("Port not available "+e);
}
}
}
[Link]
import [Link].*;
import [Link].*;
import [Link].*;
public class
FTPServer
{
public static void main
(
String args[]
)
throws IOException
{
Try
{
int num;
Scanner sc=new Scanner([Link]);
ServerSocket ss=new ServerSocket(10087);
Socket s=[Link]();
[Link]("Waiting ..... ");
DataInputStream dis=new DataInputStream([Link]());
String input=(String)[Link]();
DataOutputStream dos=new DataOutputStream([Link]());
FileInputStream fis = new FileInputStream("[Link]");
FileOutputStream fos = new FileOutputStream(input);
while((num=[Link]())!= -1)
{
48
if(num%2==0)
{
[Link](num);
}
}
[Link](input);
[Link]("File is sent to client");
[Link]();
[Link]();
}
catch(Exception e)
{
[Link]("Port not available"+e);
}
}
}
[Link]
1
2
3
4
5
6
7
8
9
49
Output:
Result:
Thus the program to the File transfer operation using virtual machine was successfully executed
and verified.
50
[Link] :7 Install Hadoop single node cluster and run simple applications like Word count
Date :
Aim :
To Install Hadoop single node cluster and run simple applications like wordcount
Procedure
In Eclipse New Java Project Provide Project Name Next Select Libraries Add
Externals JARs Go to Hadoop hadoop-1.2.1 select all jar files again click on
Add External JARs go to hadoop hadoop-1.2.1 lib select all JAR files click on
Finish.
Right Click on Src Folder Select Class Provide a Class name: WCE Package name:
[Link] Click on Finish.
51
Program: [Link]
import [Link];
import [Link];
import [Link];
import [Link];
[Link];import
[Link];
[Link]; import
[Link];
import [Link];
import [Link];
([Link]()) {
[Link]([Link]());
[Link](word, one);
extends Reducer<Text,IntWritable,Text,IntWritable> {
Context context
int sum = 0;
sum += [Link]();
[Link](sum);
[Link](key, result);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link]);
[Link]([Link](true) ? 0 : 1);
53
[Link]
For compilation we need this [Link] file to compile the mapreduce program.
[Link]
Assuming both jar and java files in same directory run the following command to compile
Syntax:
Output:
Syntax:
Output:
Output:
54
Step 5: To a run a program
Syntax:
Output:
Output:
18
3 Cloud
3 Lab.
2 Grid
2 and
Step 6: Check the output in the Web UI at [Link] the Utilities tab select browse file system
and select the correct user. The output is available inside the output folder named user
55
Step 7: To Delete an output folder
Syntax:
Output:
Result:
Thus the implemented Map Reduce example such as Word Count program on an file which will count
56
EXNO:8
AIM:
To Creating and Executing your First container using Docker
Procedure:
1. Docker is fast. Unlike a virtual machine, your application can start in a few seconds
and stop just as quickly.
2. Docker is multi-platform. You can launch your container on any system.
3. Containers can be built and destroyed faster than a virtual machine.
4. No more difficulties setting up your working environment. Once your Docker is
configured, you will never have to reinstall your dependencies manually again. If
you change computers or if an employee joins your company, you only have to
give them your configuration.
5. You keep your work-space clean, as each of your environments will be isolated and
you can delete them at any time without impacting the rest.
6. It will be easier to deploy your project on your server in order to put it online.
Now let’s create your first application
Now that you know what Docker is, it’s time to create your first application!
The purpose of this short tutorial is to create a Python program that displays a sentence.
This program will have to be launched through a Dockerfile.
You will see, it’s not very complicated once you understand the process.
Note: You will not need to install Python on your computer. It will be up to the Docker environment to
contain Python in order to execute your code.
1. Install Docker on your machine
For Ubuntu:
First, update your packages:
$ sudo apt update
Next, install docker with apt-get:
$ sudo apt install [Link]
Finally, verify that Docker is installed correctly:
$ sudo docker run hello-world
• For MacOSX: you can follow this link.
• For Windows: you can follow this link.
• A ‘Dockerfile’ file (Docker file that will contain the necessary instructions to create the
environment). 57
Normally you should have this folder architecture:
.
├── Dockerfile
└── [Link]
0 directories, 2 files
3. Edit the Python file
You can add the following code to the ‘[Link]’ file:
#!/usr/bin/env python3
print("Docker is magic!")
Nothing exceptional, but once you see “Docker is magic!” displayed in your terminal you will know that
your Docker is working.
3. Edit the Docker file
Some theory: the first thing to do when you want to create your Dockerfile is to ask yourself what you want
to do. Our goal here is to launch Python code.
To do this, our Docker must contain all the dependencies necessary to launch Python. A
linux (Ubuntu) with Python installed on it should be enough.
The first step to take when you create a Docker file is to access the DockerHub website. This
site contains many pre-designed images to save your time (for example: all images for linux
or code languages).
In our case, we will type ‘Python’ in the search bar. The first result is the official image
created to execute Python. Perfect, we’ll use it!
# A dockerfile must always start by importing the base image.
# We use the keyword 'FROM' to do that.
# In our example, we want import the python image.
# So we write 'python' for the image name and 'latest' for the version.
FROM python:latest
# In order to launch our python code, we must import it into our image.
# We use the keyword 'COPY' to do that.
# The first parameter '[Link]' is the name of the file on the host.
# The second parameter '/' is the path where to put the file on the image.
# Here we put the file at the image root folder.
COPY [Link] /
# We need to define the command to launch when we are going to run the image.
# We use the keyword 'CMD' to do that.
# The following command will execute "python ./[Link]".
CMD [ "python", "./[Link]" ]
4. Create the Docker image
Once your code is ready and the Dockerfile is written, all you have to do is create your image to contain
your application.
$ docker build -t python-test .
The ’-t’ option allows you to define the name of your image. In our case we have chosen ’python-test’ but
you can put what you want.
58
5. Run the Docker image
Once the image is created, your code is ready to be launched.
$ docker run python-test
You need to put the name of your image after ‘docker run’.
There you go, that’s it. You should normally see “Docker is magic!” displayed in your terminal.
Code is available
If you want to retrieve the complete code to discover it easily or to execute it, I have put it at your
disposal on my GitHub.
GitHub: Docker First Application example
Useful commands for Docker
Before I leave you, I have prepared a list of commands that may be useful to you on Docker.
• List your images.
$ docker image ls
• Delete a specific image.
$ docker image rm [image name]
• Delete all existing images.
$ docker image rm $(docker images -a -q)
• List all existing containers (running and not running).
$ docker ps -a
• Stop a specific container.
$ docker stop [container name]
• Stop all running containers.
$ docker stop $(docker ps -a -q)
• Delete a specific container (only if stopped).
$ docker rm [container name]
• Delete all containers (only if stopped).
$ docker rm $(docker ps -a -q)
• Display logs of a container.
$ docker logs [container name]
This is a very simple tutorial for getting started with Docker. I’ll try to keep this as simple as
possible. In this, we are going to build a basic Flask application and dockerize the application. By the end of
this tutorial, you’ll get familiar with Docker and a few Docker commands.
59
Docker man page
60
Overview of Docker
Docker is a platform for developing and running applications. It automates the deployment of applications.
It’s a tool for running applications in an isolated environment. Docker makes it easy to share an application
Docker Image
Image is a template for creating an environment. The Docker image contains the Operating System,
Software, and application code. These are all packaged in a single file. Images are defined with the
Dockerfile.
Dockerfile
The Dockerfile contains the steps that are needed to package your application(to create the image). These
steps include configuring the Operating system, install the required packages or software, copy the files from
Flask is the micro web framework for building small web applications.
Navigate inside the directory you created. Now create a file named [Link] and copy the following code to it.
[Link]
from flask import Flask
app = Flask(__name__)@[Link]('/')
def hello_world():
return 'Hello, This is my first Docker app!'if __name__ == "__main__":
[Link](debug=True, host='[Link]')
This is a simple Hello world Flask app. If you want to learn about flask in detail, then visit this page and
explore about flask. Let’s concentrate more on Docker now.
Then create the [Link] file. Add the following line to it.
[Link]
Flask==1.1.2
If you haven’t downloaded the docker yet. Get the Docker from here. Detailed installation instructions can
be found here.
Create a file called Dockerfile. This must start with capital letter D.
Dockerfile
FROM alpine:3.11RUN apk add --update pythonRUN apk add --update py-pipCOPY ./[Link]
/app/[Link] . /appWORKDIR /appRUN pip install -r [Link] 5000CMD
python [Link]
62
Let’s look at the instructions line by line to have a better understanding
FROM alpine:3.11
This is our base image. There are a lot of images available in the Dockerhub. We choose alpine since it’s one
of a lightweight image.
The FROM allows us to initialize the build over the base image. The number after the colon is the version
These two lines are used to install the python and the pip package respectively. The RUN instruction will
execute a new layer on top of the current image. This instruction is used to install packages and creating new
directories.
COPY ./[Link] /app/[Link] . /app
The COPY instruction is used to copy the files from source(.) to the destination(/app). The ‘.’ represents the
current directory. This basically copies the flask app into the image.
WORKDIR /app
This reads the [Link] file and installs the specified packages one by one on the host.
EXPOSE 5000
The EXPOSE exposes a port that is used by Flask. When you run the image you’ll get a container that
63
CMD is the command that is executed when you start a container. Here, you are using the command to run
your Python application. There can be only one CMD per Dockerfile. If you specify more than one, then the
When you start a container this command is executed. There should be only one CMD instruction in the
Dockerfile. If there is more than one, it’ll execute the last instruction.
To build the Docker image, execute this command in the terminal in the directory we created.
$docker build -t flask-app .
The -t is used to name your image flask-app. The . , in the end, represents the current directory. When you
execute this for the first time, it’ll have to download all of the layers that make up to build the image. After
that, it’ll use the cache. If you’re not an administrator, try to run the command with the sudo.
64
The -p is used to map the port running inside the container to your host. Here we’re mapping the port 5000.
The value before the colon represents the port running on your host and the value after colon represents the
Now, navigate to [Link] in your browser, you’ll see the “Hello, This is my first Docker app!”
in the window.
Container
This lists all the running containers in the Docker engine. This has information about containers like its ID,
This will list the containers that have been stopped as well.
$docker stop [container name]
Result:
Thus the program Creating and Executing First container using Docker is run successfully
65
EXNO:9 Run a container from Docker Hub
DATE:
AIM:
To run a container from docker hub
PROCEDURE:
Step 1: Get the sample application. If you have git, you can clone the repository for the sample
application. ...
Step 2: Explore the Dockerfile. ...
Step 3: Build your first image. ...
Step 4: Run your container. ...
Step 5: Verify that your container is running.
A Docker ID grants you access to Docker Hub repositories and allows you to explore images that are
available from the community and verified publishers. You’ll also need a Docker ID to share images on
Docker Hub.
To create a repository:
You need to download Docker Desktop to build, push, and pull container images.
2. Sign in to Docker Desktop using the Docker ID you created in step one.
66
1. In your terminal, run docker pull hello-world to pull the image from Docker Hub. You
should see output similar to:
2. $ docker pull hello-world
3. Using default tag: latest
4. latest: Pulling from library/hello-world
5. 2db29710123e: Pull complete
6. Digest:
sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dc
a625
7. Status: Downloaded newer image for hello-world:latest
8. [Link]/library/hello-world:latest
9. Run docker run hello-world to run the image locally. You should see output similar to:
10. $ docker run hello-world
11. Hello from Docker!
12. This message shows that your installation appears to be working
correctly.
13.
14. To generate this message, Docker took the following steps:
15. 1. The Docker client contacted the Docker daemon.
16. 2. The Docker daemon pulled the "hello-world" image from the
Docker Hub.
17. (amd64)
18. 3. The Docker daemon created a new container from that image
which runs the
19. executable that produces the output you are currently reading.
20. 4. The Docker daemon streamed that output to the Docker client,
which sent
21. it to your terminal.
22.
23. To try something more ambitious, you can run an Ubuntu container
with:
24. $ docker run -it ubuntu bash
25.
26. Share images, automate workflows, and more with a free Docker
ID:
27. [Link]
67
28. For more examples and ideas, visit:
29. [Link]
Step 5: Build and push a container image to Docker Hub from your computer
2. # syntax=docker/dockerfile:1
3. FROM busybox
4. CMD echo "Hello world! This is my first Docker image."
Note
You must be signed in to Docker Hub through Docker Desktop or the command line, and you must
also name your images correctly, as per the above steps.
68
Result
Thus the Run a container from Docker Hub is run successfully and output is verified
8. Your repository in Docker Hub should now display a new latest tag under Tags:
You’ve successfully:
Next steps
Docker Desktop
Docker Extensions
Docker Engine
Docker Build
Docker Compose
Docker Hub
69
Result
Thus the Run a container from Docker Hub is run successfully and output is verified
70
CONTENT BEYOND
TOPICS
Ex No: 10 KVM AND OPENSTACK INSTALLATION
Date :
Aim:
To install the KVM and Opensatck in Ubuntu 14.04 version an d creation of virtual
amchine.
Mandatory prerequisite:
1. Linux 64 bit Operating System (The commands mentioend are for Ubuntu Linux
Operating System latest version).
Installing KVM (Hypervisor for Virtualization)
The three files which are installed in your system will be displayed
[Link] [Link] [Link]
71
apt-get install qemu-kvm
apt-get install libvirt-bin
apt-get install bridge-utils
apt-get install virt-manager
apt-get install qemu-system
Id Name State
If Vms are running, then it shows name of VM. If VM is not runnign, the system shows blank
output, whcih means your KVM installation is perfect.
8. To test KVM installation - we can create Virtual machines but these machines are to be done
in manual mode. Skipping this, Directly install Openstack.
Installation of Openstack
1. add new user named stack – This stack user is the adminstrator of the openstack services.
To add new user – run the command as root user.
adduser stack
2. run the command
apt-get install sudo -y || install -y sudo
3. Be careful in running the command – please be careful with the syntax. If any error in thsi
following command, the system will crash beacause of permission errors.
72
echo “stack ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
export http_proxy=[Link]
sudo apt-get install git
6. Run the command (This clones updatesd version of dev-stack (which is binary auto-installer
package of Openstack)
stack@JBL01:/$ export http_proxy=[Link]
stack@JBL01:/$ export https_proxy=[Link]
stack@JBL01:/$ git config --global [Link] $http_proxy
stack@JBL01:/$ git config --global [Link] $http_proxy
git clone [Link]
ls (this shows a folder named devstack)
cd devstack (enter into the folder)
7. create a file called [Link]. To do this run the command,
nano [Link]
stack@JBL01:/devstack$ sudo nano [Link]
8. In the file, make the following entry (Contact Your Network Adminstrator for doubts in these
values)
[[local|localrc]]
FLOATING_RANGE=[Link]/27
FIXED_RANGE=[Link]/24
FIXED_NETWORK_SIZE=256
FLAT_INTERFACE=eth0
ADMIN_PASSWORD=root
DATABASE_PASSWORD=root
RABBIT_PASSWORD=root
SERVICE_PASSWORD=root
SERVICE_TOCKEN=root
73
10. Run the command (This installs Opentack)
./[Link]
11. If any error occurs, then run the command for uninistallation
./[Link]
1. update the packages
apt-get update
2. Then reinstall the package
./[Link]
12. Open the browser, [Link] address of your machine, you will get the openstack portal.
13. If you restart the machine, then to again start open stack
open terminal,
su stack
cd devstack
run ./[Link]
14. Again you can access openstack services in the browser, [Link] address of your machine,
74
75
76
77
78
79
80
81
82
83
84
85
Result:
Thus the virtual machine is launched in Ubuntu 14.04.
86
Ex No: 11
Date : BUILDING MODULAR PROGRAMS USING MAKE
Aim:
To use gcc to compile c-programs. Split the programs to different modules and create an
application using make command.
Procedure:
A Monolithic Program
o Consider this monolithic program Monolithic.c
o Placing the code into one source file has a number of shortcomings:
It doesn't reflect the modularity of the design.
There is no clear separation of the ADTs from each other and the main
program.
There is no information hiding.
The main program contains details of the PersonType representation
which it doesn't need to know.
It doesn't scale. Storing a large program as a single file produces large
files that are hard to navigate. Every time we make a change to one part,
we are forced to recompile the whole program.
o The mechanisms that enable us to reflect modularity in our code are interface and
implementation and separate compilation.
Interface and Implementation
o A module's interface is a description of the data and functions that are visible to
code external to the module. These descriptions are usually just the type
signatures of the externally visible data and functions.
o A module's implementation comprises the data structures and code that make the
module work.
o Separating the interface from the implementation is the way we
reflect abstraction.
o When we use a module, we need to know only what effects accessing the data and
routines in its interface will have and we can ignore the details of how the module
is implemented.
A Modular Program
o We can split the code above into 4 files as follows:
CString.h - defines the CString type
Person.h - defines the PersonType type
PrettyPrint.h - defines the PRETTY_PRINT macro
Person.c - implements the person manipulation
Modular.c - main program
o This separates the interface of the ADT from the implementation.
o The files can all be compiled together
gcc -o Modular Modular.c Person.c
o The "declare before main, define afterwards" style of programming makes the
split easy to do later. Compare these two ...
87
ProgramStructure.c
ProgramStructure2.c
Separate Compilation
o Separating the interface from the implementation means compiling multiple small
files, and some code is compiled multiple times.
o Some files need not be recompiled when changes are made.
o The UNIX commands to compile and link separately are
gcc -c Source.c to compile
gcc -o Executable Object1.o Object2.o ... to link
o For the example above ... these are the file dependencies
o The compiler has some options that support multi-file program development.
make
o Large programs broken up may use many object and library files
o Changing a source file means updating the objects, libraries and executables that
depend on the source file.
o The UNIX make utility keeps track of such dependencies, and recreates only the
dependant files.
o To determine which source files is part of the target to be built, and which tools
to use to build the target, make uses a file called Makefile in the current directory.
A simple Makefile for the modular program
Lines starting with a # are comments
88
A Makefile is a sequence of rules in the form
target: dependencies
action
Actions are just standard UNIX commands that are fed to a shell
If a dependency does not have a target entry, it is expected to exist as a
result of external activity, e.g., editing
o Makefiles are processed from the top down, trying to create a target. By default
the first target is used, but any target can be specified on the command line.
make(Target) {
foreach Dependency do {
if (IsATarget(Dependency)) {
make(Dependency)
}
}
if (!FileExists(Target) || AnyNewer(Dependencies,Target)) {
DoActions(Target)
}
}
o Make variables can hold values like environment variables. make automatically
sets the value of certain variables like $@. Variables of this ilk include:
$@ The file name of the target of the rule.
$< The name of the first dependency.
$^ The names of all the dependencies with spaces between them.
$? The list of dependencies that are out of date.
o make has rules that it applies by default, specified
in /usr/share/lib/make/[Link]. For example, make knows that to get from
a .c file to a .o file, it must run the C compiler with the -c flag.
Makefile using defaults
o In addition to targets that build programs, make can be made to perform other
housekeeping by specifying targets that are not necessarily programs. For
example, a common target is
o clean:
o rm -f *.o *.bak *~
which causes make to delete object files and any backup files (*.bak and *~)
created by other programs such as editors.
o makedepend or mkdep
Examines each of the source files in its command line and looks
for #include directives.
89
Generates a list of source files that are needed by the compiler to produce
the resulting target.
Result is placed in .depend (FreeBSD) or appended to makefile (Linux)
o A more realistic Makefile for the example
Creating a library
o .o files can be combined into libraries using the ar utility.
o Library files are given a .a extension.
o The object files can be used by the compiler by specifying the location of the
library file with the -L flag, and giving the library file name.
o Example
o prompt> gcc -c *.c
o prompt> ar -rv libmystuff.a *.o
o prompt> pwd
o /home/geoff/c
o prompt> gcc MyMain.c -L/home/geoff/c -lmystuff -o MyMain
Exercises
Below is the content of a makefile. Assume that the files part1.c and part3.c have just
been modified. Write down the sequence of command activations in the correct order
when make is run.
part2.o: part2.c
gcc -c part2.c
part3.o: part3.c
gcc -c part3.c
Program
Monolithic.c
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
90
typedef char CString[MAX_CSTRING];
typedef struct {
CString FamilyName;
CString GivenName;
} PersonType;
//
void SetNames(CString NewFamilyName,CString NewGivenName,PersonType *APerson) {
strcpy(APerson->FamilyName,NewFamilyName);
strcpy(APerson->GivenName,NewGivenName);
}
//
void GetFullName(PersonType APerson,CString FullName) {
strcpy(FullName,[Link]);
strcat(FullName," ");
strcat(FullName,[Link]);
}
//
int main(void) {
PersonType MyPerson;
CString InputFamilyName;
CString InputGivenName;
CString FullName;
CString OutputLine;
#ifndef CSTRING_H
#define CSTRING_H
//
#define MAX_CSTRING 128
91
typedef char CString[MAX_CSTRING];
//
#endif
Person.h
#ifndef PERSON_H
#define PERSON_H
//
#include "CString.h"
typedef struct {
CString FamilyName;
CString GivenName;
} PersonType;
//
void SetNames(CString NewFamilyName,CString NewGivenName,PersonType *APerson);
void GetFullName(PersonType APerson,CString FullName);
//
#endif
\
PrettyPrint.h
#ifndef PRETTYPRINT_H
#define PRETTYPRINT_H
//
#define PRETTY_PRINT(This) printf("\n----------------\n%s\n --------------- \n",(This))
//
#endif
Person.c
//
#include <string.h>
#include "CString.h"
#include "Person.h"
//
void SetNames(CString NewFamilyName,CString NewGivenName,
PersonType *APerson) {
// --- Comment
strcpy(APerson->FamilyName,NewFamilyName);
strcpy(APerson->GivenName,NewGivenName);
}
92
//
void GetFullName(PersonType APerson,CString FullName) {
strcpy(FullName,[Link]);
strcat(FullName," ");
strcat(FullName,[Link]);
}
//
Modular.c
//
#include <stdio.h>
#include <stdlib.h>
#include "CString.h"
#include "Person.h"
#include "PrettyPrint.h"
//
int main(void) {
PersonType MyPerson;
CString InputFamilyName;
CString InputGivenName;
CString FullName;
CString OutputLine;
printf("Please enter the given name and family name : ");
scanf(" %s %s",InputGivenName,InputFamilyName);
SetNames(InputFamilyName,InputGivenName,&MyPerson);
GetFullName(MyPerson,FullName);
sprintf(OutputLine,"The full name is %s",FullName);
PRETTY_PRINT(OutputLine);
return(EXIT_SUCCESS);
}
//
Result
Thus the program use make command executed and answer id verified
93
[Link] CONTROL SYSTEMS COMMAND TO CLONE, COMMIT, PUSH,
FETCH, PULL, CHECKOUT, RESET, AND DELETE
Date:
Aim:
Use version control systems command to clone, commit, push, fetch, pull, checkout, reset, and
delete repositories.
Description:
Git is a version control system (software) and GitHub is a source code hosting service. Git is a
version control system for tracking changes in computer files and coordinating work on those files
among multiple people.
94
Procedure
Setting Up Git
Git Commands
Git provides a set of simple, distinct, standalone commands developed according to the "Unix
toolkit" philosophy - build small, interoperable tools.
To issue a command, start a "Terminal" (for Ubuntu/Mac) or "Git Bash" (for Windows):
$ git <command> <arguments>
The commonly-used commands are:
1. init, clone, config: for starting a Git-managedproject.
95
2. add, mv, rm: for staging file changes.
3. commit, rebase, reset, tag:
4. status, log, diff, grep, show: show status
5. checkout, branch, merge, push, fetch, pull
Help and Manual
The best way to get help these days is certainly googling.
To get help on Git commands:
$ ls -al
drwxr-xr-x 1 xxxxx xxxxx 4096 Sep 14 14:58 .git
-rw-r--r-- 1 xxxxx xxxxx 426 Sep 14 14:40 [Link]
-rw-r--r-- 1 xxxxx xxxxx 142 Sep 14 14:32 [Link]
-rw-r--r-- 1 xxxxx xxxxx 66 Sep 14 14:33 [Link]
A hidden sub-directory called ".git" will be created under your project root directory (as shown
in the above "ls -a" listing), which contains ALL Git related data.
The local repo after "git init" is empty. You need to explicitly deposit files into the repo.
Before we proceed, it is important to stress that Git manages changes to files between so-called
commits. In other words, it is a version control system that allows you to keep track of the file
changes at the commits.
Staging File Changes for Tracking ( git add <file>...)
Issue a "git status" command to show the status of the files:
$ git status
On branch master
96
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
[Link]
[Link]
[Link]
nothing added to commit but untracked files present (use "git add" to track)
By default, we start on a branch called "master". We will discuss "branch" later.
In Git, the files in the working tree are either untracked or tracked. Currently, all 3 files
are untracked. To stage a new file for tracking, use "git add <file>..." command.
$ git status
On branch master Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file:
[Link]
Untracked files:
(use "git add <file>..." to include in what will be committed) [Link]
[Link]
$ git status
On branch master Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage) new file:
[Link]
new file: [Link]
Untracked files:
97
(use "git add <file>..." to include in what will be committed)
[Link]
The command "git add <file>..." takes one or more filenames or pathnames with possibly
wildcards pattern. You can also use "git add ." to add all the files in the current directory (and all
sub-directories). But this will include "[Link]", which we do not wish to be tracked.
When a new file is added, it is staged (or indexed, or cached) in the staging area (as shown in
the GIT storage model), but NOT yet committed.
Git uses two stages to commit file changes:
1. "git add <file>" to stage file changes into the staging area, and
2. "git commit" to commit ALL the file changes in the staging area to the local repo.
The staging area allows you to group related file changes and commit them together.
Committing File Changes (git commit)
The "git commit" command commits ALL the file changes in the staging area. Use a -m option
to provide a message for the commit.
$ git commit -m "First commit" // -m to specify the commit message
[master (root-commit) 858f3e7] first commit
2 files changed, 8 insertions(+)
create mode 100644 [Link]
create mode 100644 [Link]
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
[Link]
nothing added to commit but untracked files present (use "git add" to track)
Once the file changes are committed, it is marked as unmodified in the staging area (not shown in
"Changes to be committed").
Both "git diff" and "git diff --staged" return empty output, signalling there is no "unstaged" and
"staged" changes.
98
More on "git checkout" and Detached HEAD
"git checkout" can be used to checkout a branch, a commit, or files. The syntaxes are:
$ git checkout <branch-name>
$ git checkout <commit-name>
$ git checkout <commit-name> <filename>
When you checkout a commit, Git switches into so-called "Detached HEAD" state, i.e., the
HEAD detached from the tip of a branch. Suppose that you continue to work on the detached
HEAD on commit-5, and wish to merge the commit-5 back to master. You checkout the master
branch, but there is no branch name for your to reference the commit-5!!!
In Summary, you can use "git checkout <commit-name>" to inspect a commit. BUT you should
always work on a branch, NOT on a detached HEAD.
$ git reset
// Reset the staging area
// Remove all changes (of all files) from staging area,
// not affecting the working tree.
99
For Ubuntu, issue command "sudo apt-get install git".
For Windows, use "git-bash" command shell provided by Windows installer to issue command.
For Mac/Ubuntu, use "Terminal".
Step 2: Configuring GIT:
// Setup your username and email to be used in labeling commits
$ git config --global [Link] "your-email@[Link]"
$ git config --global [Link] "your-name"
Step 3: Set up GIT repo for a project. For example, we have a project called "olas1.1" located at
"/usr/local/olas/olas1.1".
$ cd /usr/local/olas/olas1.1
$ ls -al
// Check for ".git" directory
Create a "[Link]" (or "[Link]" if you are using Eclipse's WikiText in "textile"
markup) under your project directory to describe the project.
Step 4: Start "Edit/Stage/Commit/Push" cycles.
Create/Modify files. Stage files into the staging area via "git add <file>".
// Check the status
$ git status
......
100
www/.*
www/.*/
The trailing slash indicate directory (and its sub-directories and files).
If you want the ".gitignore" to be tracked (which is in the ignore list):
$ git add -f .gitignore
// -f to override the .gitignore
Step 6: Commit.
$ git status
......
$ git status
......
Step 7: Push to the Remote Repo (for backup, version control, and collaboration).
You need to first create a repo (says olas) in a remote GIT host, such as GitHub or BitBucket.
Take note of the remote repo URL, e.g., [Link]
$ cd /path-to/local-repo
// Add a remote repo name called "origin" mapped to the remote URL
$ git remote add origin [Link]
101
$ git push origin master
Step 9: Create a "tag" (for version number).
// Tag a version number to the current commit
$ git tag -a v1.1 -m "Version 1.1"
// -a to create an annotated tag, -m to provide a message
102
// Switch to "master" branch of local repo
$ git merge origin/master
// Merge the fetched changes from stored remote branch to local
git pull
As a short hand, "git pull" combines "git fetch" and "git merge" into one command, for
convenience.
$ git pull <remote-name>
// Fetch the remote's copy of the current branch and merge it
// into the local repo immediately, i.e., update the working tree
// Same as
$ git fetch <remote-name> <current-branch-name>
$ git merge <remote-name> <current-branch-name>
Result:
Thus the control commands executed in GIT
103
VIVA QUESTIONS
VIVA QUESTIONS AND ANSWERS
[Link] Eclipse.
Eclipse is an integrated development environment (IDE) used in computer programming, and is the most
widely used Java IDE. It contains a base workspace and an extensible plug-in system for customizing the
environment.
[Link] Netbeans.
NetBeans is an open-source integrated development environment (IDE) for developing with Java, PHP,
C++, and other programming languages. NetBeans is also referred to as a platform of modular components
used for developing Java desktop applications.
[Link] IaaS?
The IaaS layer offers storage and infrastructure resources that is needed to deliver the Cloud
services. It only comprises of the infrastructure or physical resource. Top IaaS Cloud Computing
Companies: Amazon (EC2), Rackspace, GoGrid, Microsoft, Terremark and Google.
[Link] PaaS?
PaaS provides the combination of both, infrastructure and application. Hence, organisations
using PaaS don’t have to worry for infrastructure nor for services. Top PaaS Cloud Computing
Companies: [Link], Google, Concur Technologies, Ariba, Unisys and Cisco..
[Link] SaaS?
In the SaaS layer, the Cloud service provider hosts the software upon their servers. It can be defined
as a in model in which applications and softwares are hosted upon the server and made available to
customers over a network. Top SaaS Cloud Computing Companies: Amazon Web Services,
AppScale, CA Technologies, Engine Yard, Salesforce and Windows Azure.
[Link] is meant by virtualization?
Virtualizationisacomputerarchitecturetechnologybywhichmultiplevirtualmachines (VMs)are
multipl exedin the same hardwar [Link] VMs canbe dated back to the 1960s. The purpose
of a VM is to enhance resource sharing by many users and improve computer performance interms of
resource utilization and application flexibility.
[Link] HADOOP.
Hadoop is an open source, Java-based programming framework that supports the processing and storage of
extremely large data sets in a distributed computing environment. It is part of the Apache project sponsored
by the Apache Software Foundation.
[Link] HDFS.
Hadoop Distributed File System (HDFS) is a Java-based file system that provides scalable and reliable data
storage that is designed to span large clusters of commodity servers. HDFS, MapReduce, and YARN form
the core of Apache™ Hadoop®.
[Link] GAE.
Google App Engine (often referred to as GAE or simply App Engine) is a Platform as a Service and cloud
computing platform for developing and hosting web applications in Google-managed data centers.
Applications are sandboxed and run across multiple servers. App Engine offers automatic scaling for web
applications—as the number of requests increases for an application, App Engine automatically allocates
more resources for the web application to handle the additional demand.
[Link] is Cloudsim?
CloudSim is a simulation toolkit that supports the modeling and simulation of the core functionality of
cloud, like job/task queue, processing of events, creation of cloud entities(datacenter, datacenter brokers,
etc), communication between different entities, implementation of broker policies, etc. This toolkit allows
to:
The Support of modeling and simulation of large scale computing environment as federated cloud
data centers, virtualized server hosts, with customizable policies for provisioning host resources to
virtual machines and energy-aware computational resources
It is a self-contained platform for modeling cloud’s service brokers, provisioning, and allocation
policies.
It supports the simulation of network connections among simulated system elements.
Support for simulation of federated cloud environment, that inter-networks resources from both
private and public domains.
Availability of a virtualization engine that aids in the creation and management of multiple
independent and co-hosted virtual services on a data center node.
Flexibility to switch between space shared and time shared allocation of processing cores to
virtualized services.
[Link] of Cloudsim.
[Link] OpenStack.
OpenStack is a cloud operating system that controls large pools of compute, storage, and networking
resources throughout a datacenter, all managed and provisioned through APIs with common authentication
mechanisms.A dashboard is also available, giving administrators control while empowering their users to
provision resources through a web interface.
[Link] Trystack.
TryStack is a great way to take OpenStack for a spin without having to commit to a full
deployment.
This free service lets you test what the cloud can do for you, offering networking, storage and compute
instances, without having to go all in with your own hardware.
It’s a labor of love spearheaded by three Red Hat OpenStack experts Will Foster, Kambiz
Aghaiepour and Dan Radez.
TryStack’s set-up must bear the load of anyone who wants to use it, but instead of an equally
boundless budget and paid staff, it was originally powered by donated equipment and volunteers from
Cisco, Dell, Equinix, NetApp, Rackspace and Red Hat who pulled together for this OpenStack Foundation
project.
[Link] Hadoop.
Hadoop is an open-source software framework for storing data and running applications on clusters
of commodity hardware. It provides massive storage for any kind of data, enormous processing power and
the ability to handle virtually limitless concurrent tasks or jobs.