Skip to main content

HyperForm: A Practical Guide to Docker For Windows Administrators






Linux & Docker has succeeded in finding a place alongside Windows in many enterprise environments. More than ever before, Windows administrators need to be familiar with Linux & Docker and understand the relative strengths and weaknesses of the two platforms. Written for the Windows administrator, this guide provides practical information on integrating Linux, Docker, and Windows.
At the writing of this guide Docker container tech for Windows is in the Tech-Preview state. And it will take even more time for most of the official docker images to be available for Windows. 
In this guide, we'll be focussing on automation of the following workflows.

  1. Docker Containers running on top of Linux Virtual Machines.
  2. Linux Virtual Machines running on top of Hyper-V
  3. Windows Virtual Machines running on top of Hyper-V



First, let's quickly glance over Docker terminology and container lifecycle.
  • Image
    • Is a container snapshot just like in a virtualization world a VM checkpoint or a VM snapshot. 
    • Refer to docker image documentation for more details.
  • Repository
    • Provides a standard interface for storing and retrieving images. 
    • e.g. Docker Hub, Nexus, Artifactory, Quay.io
  • Container
    • Wraps a piece of software (e.g. MySQL, IIS) in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries - Anything that can be installed on a server.
  • Container Lifecycle
    • Just like VM, container supports similar lifecycles states like Start, Stop, Restart, Pause, Snapshot, Destroy etc.



Secondly, It is important to use proper management products to administer Docker, Linux, and Windows environments. Having direct access to Hosts and Docker CLI gives unprecedented access with no access controls, policies, governance, and ability to support multi-tenancy.


A quick introduction to HyperForm (DCHQ) from HyperGrid - HyperForm is a Hybrid Cloud/Container Management platform.

  • Seamlessly works with Docker Ecosystem supports.
    • Docker Engine
    • Swarm
    • Docker-Compose
    • Docker-Machine
    • Docker-Volumes
    • Weave (Networking)
    • Repository etc



  • Seamlessly works with Hyper-V. 
    • Register a Hyper-V or Hyper-V Failover Cluster.


















  • Build-in Orchestrator can provision Windows, Linux based VM's on Hyper-V.
    • UI based workflow for provisioning VM's.
    • Simplifies and introduces Cloud-Provider like discipline for "Instance Types".

    • Text Template based workflow for provisioning VM'





















    • Build-In Ops Module can do real-time monitoring, scripting of both Windows, Linux VM's.












































Governance & Access-controls
    • Seamlessly control which Users are entitled to provision VM on the registered Hyper-V.
    • Control what VM templates and blueprints are allowed.
    • Control whether a user can request custom VM.
    • Optionally enforce Approvals for VM requests.
    • Set Max VM's that can be provisioned on the Hyper-V.
    • Ability to set Custom Quota per user/groups.



Lastly, let's deploy Docker containers on provisioned VM's. Note: Multiple VM's can be grouped into a single Cluster which can optionally have an overlay network (Weave, Swarm) for the container to discover each other and communicate across hosts.


  • The Cluster/DataCenter view in HyperForm






  • The Library view in HyperForm

















  • Customize and deploy "Wordpress with MySQL" image.










































  • Deployed Application and Management options.
    • Seamlessly real-time monitoring, and alerts of containers
    • In-browser Terminal
    • Scale-out, Scale-in individual nodes
    • Update, Refresh running container.
    • Access to logs, timeline etc


















Conclusion

Containerizing enterprise applications is still a challenge mostly because existing application composition frameworks do not address complex dependencies, external integrations or application life-cycle management tasks post-provision.

HyperForm, available in hosted and on-premise versions, addresses all of these challenges and simplifies the containerization of enterprise applications through an advanced application composition framework that extends Docker Compose supporting
  • advanced plug-ins that can be invoked at more than 20 different lifecycle stages to enable service discovery, on-the-fly containerization and application storage automation, and
  • data injection to support complex application dependencies.

To run & manage the simple Docker ASP.NET "Hello MVC" and “Hello Web” applications on 18 different clouds and virtualization platforms (including HyperGrid, vSphere, OpenStack, AWS, Rackspace, Microsoft Azure, Google Compute Engine, DigitalOcean, IBM SoftLayer, etc.), make sure that you either:


Comments

Rod said…
Hello Intesar,

Thanks for the excellent write up.
I use HyperForm mainly on CentOS/UBuntu baremetal but it's nice to know it works just as well on Hyper-V VMs. Having a central tool where one can perform container orchestration, app modeling combined with features such as LDAP and Jenkins integration make HyperForm a very versatile tool in the DevOps space.

Thanks,
Rod
Unknown said…
Good article on Docker, content is good and very informative. thank you for sharing.

Best Regards,
CourseIng - DevOps Training in Hyderabad
Sharmi Ammu said…
This is really a nice and informative, containing all information and also has a great impact on the new technology.
Cloud Computing Courses
Cloud computing course in Chennai

Popular posts from this blog

JPA 2 new feature @ElementCollection explained

@ElementCollection is new annotation introduced in JPA 2.0, This will help us get rid of One-Many and Many-One shitty syntax. Example 1: Stores list of Strings in an Entity @Entity public class Users implements Serializable {     private static final long serialVersionUID = 1L;     @Id     @GeneratedValue(strategy = GenerationType.AUTO)     private Long id;     @ElementCollection     private List<String> certifications = new ArrayList <String> ();     public Long getId() {         return id;     }     public void setId(Long id) {         this.id = id;     }     public List <String> getCertifications() {         return certifications;     }     pub...

Validating CSV Files

What is CsvValidator ?   A Java framework which validates any CSV files something similar to XML validation using XSD. Why should I use this ?   You don't have to use this and in fact its easy to write something your own and also checkout its source code for reference. Why did I write this ?   Some of our projects integrate with third party application which exchanges information in CSV files so I thought of writing a generic validator which can be hooked in multiple projects or can be used by QA for integration testing. What is the license clause ?   GNU GPL v2 Are there any JUnit test cases for me checkout ?  Yes,  source How to integrate in my existing project ? Just add the Jar which can be downloaded from here  CsvValidator.jar  and you are good. Instantiate  CsvValidator c onstructor which takes these 3 arguements          // filename is the the file to be validated and here ...

Reuse JPA Entities as DTO

Note : Major design advantages of JPA Entities are they can detached and used across tiers and networks and later can by merged. Checkout this new way of querying entities in JPA 2.0 String ql = " SELECT new prepclass2.Employee (e.firstname, e.lastname) FROM Employee e "; List<Employee> dtos = em.createQuery(ql).getResultList(); The above query loads all Employee entities but with subset of data i.e. firstname, lastname. Employee entity looks like this. @Entity @Table(name="emp") public class Employee implements Serializable {     private static final long serialVersionUID = 1L;     @Id     @GeneratedValue(strategy = GenerationType.AUTO)     private Long id;     @Column     private String firstname;     @Column     private String lastname;     @Column     private String username;     @Column ...