Friday, July 17, 2015


What is Docker?

                  Docker is a platform for developing, building and shipping the application using Container Virtualization Technology.

What Docker Consists of?

                 Docker Platform itself composed of many tools:

                        >>Docker Engine
                        >>Docker Machine
                        >>Docker Hub
                        >>Docker Swarm
                        >>Docker Compose

[Note: Container Virtualization uses kernel on host to create multiple containers. From outside it looks like we are dealing with VMs and not containers. But it is not.

We may be using the term hypervisor at many places below and a short note on what hypervisor is. A hypervisor or virtual machine monitor (VMM) is a piece of computer software [Ex. VMware VSphere], firmware or hardware that creates and runs virtual machines.
A computer on which a hypervisor is running one or more virtual machines is defined as a host machine. Each virtual machine is called a guest machine. ]
Why Docker?
               >>Docker interacts directy with the Kernel of Host OS whereas the hypervisor are something installed on the Host and operates based on the Guest Instances sharing the Hardware Resources.
Docker Architechture
Hypervisor Architechture
This inturn sparks a question in mind. What makes Containers different from VMS?

  • Containers interact directly with Host Kernel.
  • Containers are lightweight and can be started quick.
  • Containers requires less CPU and RAM to Start up. Thus we can have more Containers. 
Docker Machine:

  • It's nothing but the boot2Docker that helps us setup the Virtual Linux Box, place Docker Engine within and Configure Container to talk to this Engine.
  • Docker Machine act the Docker Host.

Docker Engine:

Also referred as Docker Daemon.
  • It's a program that enables the Containers to be built, shipped and run.
  • The Docker Engine uses Linux-specific kernel features. We can relate just like the one below if our OS is Windows / Mac. 

Docker Engine

  • Thus we install boot2Docker that sets up the Virtual Linux Box and have the Docker Engine placed with in.

Docker Client
  • Docker clients helps in interacting with the Docker Server/ Docker Engine/
  • Docker Client fetch the Input from User and pass the details back to Docker Daemon for processing.
  • Docker Client and the Docker Machine(boot2Docker) in most of the cases are installed in the same host. Here it is the OS Platform that we use.
  • If not happy with Command line docker, we also opt for Kitematic that GUI Tool for interacting with Docker daemon.
[Note: command docker version on container returns the Daemon Version and the Docker Version]
Containers Vs Images:
         Images are read only Templates used to create the Containers. Stored in Local or the Docker Hub. While Containers are the Application Platform made up of multiple images.

Docker Registry/Hub Vs Repository:
         Images  can be stored in the registry/ Docker Hub. The registry holds multiple repositories and repository holds multiple images.

         Example: Docker Hub Public Registry -
                         Image fetched from repository is run using docker run [repo_name: tag_name] command

How to create the Docker Engine?

Gets Automatically created if not created at the start of the boot2Docker terminal. This is just a general info.

      Step 1:  Run the common in terminal boot2Docker delete
     Step 2:  boot2Docker init - brings up the Docker Engine. 
     Step 3: boot2Docker up - starts the Docker Engine and would make it run.
      Step 4:  boot2Docker ip - brings the IP Address
Common Docker Commands:

           docker run [repo_name: tag_name of image] -> Fetch the Image and installs in the Container.       
           docker start name_of_container -> Starts the Container.
           docker stop name_of_container -> Stops the Container.
           docker ps [-a include stopped containers] -> Lists all the Containers.
           docker rm <image | id>  -> Remove a Container.
           docker login Login the Containers with Docker Hub Credentials.

Sunday, July 12, 2015

Squirrel SQL

Squirrel SQL:

The SQuirreL SQL Client is a graphical program written in the Java programming language that will allow you to view the structure of a JDBC-compliant database, browse the data in tables, issue SQL commands and much more.

Configuration of Squirrel SQL to connect to Derby Database:

Step 1: Launch the Squirrel SQL.

Step 2: Click Add button and would be presented with the below dialog. Provide the Name, Example URL, Website URL and in the external Class Path, add the Jars derby.jar and derbyclient.jar that comes along with the Installation of Derby Database. Click OK button

Step 3: Select Alias Tab. Feed in the below details: Sample Name, Driver that we created in Step 2, URL, Username and password being APP, Select Auto Logon and click Ok Button.

Step 4: Now we would be able to view the Contents of Derby Database.

Apache Derby

Apache Derby:

What is Apache Derby?
  • Relational database management being developed by Apache Software Foundation. 
  • Was initially developed by the Developers of Cloudscape.
  • Informix later acquired Cloudscape. Acquisition continued. IBM acquired Informix and still extended its support for Derby.
  • Time Progressed. IBM later withdrew its support and Apache Software Foundation continued the development of Apache Derby.

Features of Apache Derby:

Max DB Size                      Unlimited

Max Table Size                  Unlimited
Max Row Size                    Unlimited
Max Columns per row      1012
Max Column Name Size   128 bits

When Apache Derby?

  • Apache Derby being written in Java and thus usable only by Java and other scripting languages(Jython, JRuby, Jacl, etc)  that run on JVM.
  • Consumes less Footprint and can be opted when we look for DB that can set quickly.
Installation of Apache Derby:
      In Windows:
                 >> Set the environment variable DERBY_HOME to the Derby installation directory
                 >> Add DERBY_HOME/bin to the "path" environment variable

       In Mac:
               >>Open the Terminal and hit vi ~/.bash_profile 
               >>Now enter the below set of values
                     export DERBY_HOME=/Volumes/D Drive/Softwares/db-derby-
                     export PATH=$PATH:$DERBY_HOME/bin

Check the Installation    

To check if Derby has been successfully installed, run the following command where /User/hspadmin... is the location of derbyrun.jar residing within lib directory

java -jar /Users/hspadmin/Applications/db-derby- sysinfo

Once run, you should get the below output:

------------------ Java Information ------------------
Java Version:    1.7.0_75
Java Vendor:     Oracle Corporation
Java home:       /Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre
Java classpath:  /Users/hspadmin/Applications/db-derby-
OS name:         Mac OS X
OS architecture: x86_64
OS version:      10.9.5
Java user name:  hspadmin
Java user home:  /Users/hspadmin
Java user dir:   /Users/hspadmin Java Platform API Specification
java.specification.version: 1.7
java.runtime.version: 1.7.0_75-b13
--------- Derby Information --------
[/Users/hspadmin/Applications/db-derby-] - (1616546)
[/Users/hspadmin/Applications/db-derby-] - (1616546)
[/Users/hspadmin/Applications/db-derby-] - (1616546)
[/Users/hspadmin/Applications/db-derby-] - (1616546)
[/Users/hspadmin/Applications/db-derby-] - (1616546)

Command to Start the Derby Server


Change the Port of Derby Server

     By default Derby Server runs on the port 1527 and we can change the default port by the below command:

           startNetworkServer -p 3301

Accept of Connections from specific host:

   By default Derby accepts connections only from localhost and to make it accept the request from other hosts, run the below command with ip address/ domain name

         startNetworkServer -h

Accept of Connections from all Host:

         startNetworkServer -h

View the Contents of the Database:

Apache Derby doesnot provide any provision for Graphical view of the DB Contents. 
We normally use the Tools IJ / Squirrel SQL Client for this Purpose.