Chris Rosen, Technical Product Manager for IBM Containers, crosen@us.ibm.com Lin Sun, Senior Software Engineer for IBM Containers, linsun@us.ibm.



Similar documents
What new with Informix Software as a Service and Bluemix? Brian Hughes IBM

Leveraging WebSphere Commerce for Search Engine Optimization (SEO)

GeoInt 2015 Watson Workshop

Lab 1 Whatsup Watson Hands-On Lab

Platform as a Service and Container Clouds

Building a Continuous Integration Pipeline with Docker

Installing and Configuring DB2 10, WebSphere Application Server v8 & Maximo Asset Management

IBM Security QRadar Vulnerability Manager Version User Guide

Remote Control Tivoli Endpoint Manager - TRC User's Guide

IBM WebSphere Application Server Version 7.0

Hadoop Basics with InfoSphere BigInsights

Hadoop Basics with InfoSphere BigInsights

IBM s Cloud Platform : IBM Bluemix

Getting Started with IBM Bluemix: Web Application Hosting Scenario on Java Liberty IBM Redbooks Solution Guide

Name: Srinivasan Govindaraj Title: Big Data Predictive Analytics

IBM WEBSPHERE LOAD BALANCING SUPPORT FOR EMC DOCUMENTUM WDK/WEBTOP IN A CLUSTERED ENVIRONMENT

Source Code Management for Continuous Integration and Deployment. Version 1.0 DO NOT DISTRIBUTE

DEPLOYING EMC DOCUMENTUM BUSINESS ACTIVITY MONITOR SERVER ON IBM WEBSPHERE APPLICATION SERVER CLUSTER

Quick Start Guide for Parallels Virtuozzo

AWS CodePipeline. User Guide API Version

IBM Software Hadoop Fundamentals

Installing and Configuring vcloud Connector

GRAVITYZONE HERE. Deployment Guide VLE Environment

IBM WebSphere Partner Gateway V6.2.1 Advanced and Enterprise Editions

Using IBM dashdb With IBM Embeddable Reporting Service

Citrix Systems, Inc.

IBM Tivoli Provisioning Manager V 7.1

Table 1 shows the LDAP server configuration required for configuring the federated repositories in the Tivoli Integrated Portal server.

WebSphere Commerce V7 Feature Pack 2

Tivoli IBM Tivoli Monitoring for Transaction Performance

NETWRIX EVENT LOG MANAGER

Tivoli Automation for Proactive Integrated Service Management

Business Process Management IBM Business Process Manager V7.5

SC-T35/SC-T45/SC-T46/SC-T47 ViewSonic Device Manager User Guide

IBM WebSphere Application Server Communications Enabled Applications

AdRadionet to IBM Bluemix Connectivity Quickstart User Guide

How To Install Project Photon On Vsphere 5.5 & 6.0 (Vmware Vspher) With Docker (Virtual) On Linux (Amd64) On A Ubuntu Vspheon Vspheres 5.4

IBM Endpoint Manager Version 9.1. Patch Management for Red Hat Enterprise Linux User's Guide

EMC ViPR Controller Add-in for Microsoft System Center Virtual Machine Manager

Quick Start Guide for VMware and Windows 7

Lab - Building an Internet of Things Application Hands-On Lab

IBM WebSphere Application Server Communications Enabled Applications Setup guide

Hands on Lab: Building a Virtual Machine and Uploading VM Images to the Cloud using Windows Azure Infrastructure Services

Requirements Change Management and Artifact Workflow. DOP-1027 DOORS Next Generation

Tivoli Endpoint Manager for Remote Control Version 8 Release 2. User s Guide

IBM RATIONAL PERFORMANCE TESTER

Administration Quick Start

VMware Mirage Web Manager Guide

System Administration Training Guide. S100 Installation and Site Management

CA Spectrum and CA Embedded Entitlements Manager

Maximo Cognos BI. Pam Denny Maximo BI Architect Twitter: andbflo_denny IBM Corporation

XenClient Enterprise Synchronizer Installation Guide

IBM TRIRIGA Anywhere Version 10 Release 4. Installing a development environment

2692 : Accelerate Delivery with DevOps with IBM Urbancode Deploy and IBM Pure Application System Lab Instructions

Automating client deployment

Single Sign-on (SSO) technologies for the Domino Web Server

IBM Bluemix. The Digital Innovation Platform. Simon

C05 Discovery of Enterprise zsystems Assets for API Management

Shavlik Patch for Microsoft System Center

unisys Unisys Stealth(cloud) for Amazon Web Services Deployment Guide Release 1.0 January

Secure Messaging Server Console... 2

FortiAnalyzer VM (VMware) Install Guide

Sametime Gateway Version 9. Deploying DMZ Secure Proxy Server

Netwrix Auditor for Windows Server

ADY-1727: IBM Watson Analytics and Cognos Business Intelligence for Line of Business Smart Data Discovery

Continuous Delivery on AWS. Version 1.0 DO NOT DISTRIBUTE

vcloud Director User's Guide

z/os V1R11 Communications Server system management and monitoring

Implementing the End User Experience Monitoring Solution

With Wakanda Cloud, you can publish a solution you created with Wakanda on the cloud. Wakanda Cloud allows you to:

Tivoli Endpoint Manager for Security and Compliance Analytics. Setup Guide

IBM Tivoli Network Manager 3.8

Netwrix Auditor for Exchange

IBM Configuring Rational Insight and later for Rational Asset Manager

Patch Management for Red Hat Enterprise Linux. User s Guide

Adobe Summit 2015 Lab 718: Managing Mobile Apps: A PhoneGap Enterprise Introduction for Marketers

IBM Campaign Version-independent Integration with IBM Engage Version 1 Release 3 April 8, Integration Guide IBM

insync Installation Guide

SOLARWINDS ORION. Patch Manager Evaluation Guide for ConfigMgr 2012

ISVforce Guide. Version 35.0, Winter

Getting Started With Halo for Windows For CloudPassage Halo

AWS Directory Service. Simple AD Administration Guide Version 1.0

Security of Cloud Computing for the Power Grid

Managing and Securing the Mobile Device Invasion IBM Corporation

Sametime Version 9. Integration Guide. Integrating Sametime 9 with Domino 9, inotes 9, Connections 4.5, and WebSphere Portal

The Weakest Link: Ethically Hacking the Connected Building. Paul Ionescu IBM X-Force Ethical Hacking Team

VMware Identity Manager Administration

SAS Visual Analytics 7.2 for SAS Cloud: Quick-Start Guide

Introduction to Directory Services

Business Process Management IBM Business Process Manager V7.5

Installation Guide. Novell Storage Manager for Active Directory. Novell Storage Manager for Active Directory Installation Guide

User's Guide - Beta 1 Draft

Audit Management Reference

Quick Start Guide. for Installing vnios Software on. VMware Platforms

CloudCIX Bootcamp. The essential IaaS getting started guide.

IBM Bluemix, the digital innovation platform

Kentico CMS 7.0 Intranet Administrator's Guide

Getting Started with AWS. Hosting a Static Website

Transcription:

Chris Rosen, Technical Product Manager for IBM Containers, crosen@us.ibm.com Lin Sun, Senior Software Engineer for IBM Containers, linsun@us.ibm.com

Please Note IBM s statements regarding its plans, directions, and intent are subject to change or withdrawal without notice at IBM s sole discretion. Information regarding potential future products is intended to outline our general product direction and it should not be relied on in making a purchasing decision. The information mentioned regarding potential future products is not a commitment, promise, or legal obligation to deliver any material, code or functionality. Information about potential future products may not be incorporated into any contract. The development, release, and timing of any future features or functionality described for our products remains at our sole discretion. Performance is based on measurements and projections using standard IBM benchmarks in a controlled environment. The actual throughput or performance that any user will experience will vary depending upon many factors, including considerations such as the amount of multiprogramming in the user s job stream, the I/O configuration, the storage configuration, and the workload processed. Therefore, no assurance can be given that an individual user will achieve results similar to those stated here. Acknowledgments and Disclaimers Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM operates. The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms and conditions of the applicable license agreement governing the use of IBM software. All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved. Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results. Copyright IBM Corporation 2015. All rights reserved. U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Please update paragraph below for the particular product or family brand trademarks you mention such as WebSphere, DB2, Maximo, Clearcase, Lotus, etc IBM, the IBM logo, ibm.com, Interconnect, [IBM Brand, if trademarked], and [IBM Product, if trademarked] are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol ( or ), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at Copyright and trademark information at www.ibm.com/legal/copytrade.shtml If you have mentioned trademarks that are not from IBM, please update and add the following lines: Other company, product, or service names may be trademarks or service marks of others. REMINDER: Please follow the guidelines for copying third party materials. Third party screen shots, logos, presentations and website content are copyrighted materials owned by the third party, and as such we need permission from the third party to use them. Also, be sure the information you put on a chart is verifiable. Be sure to cite the source on your deck when using words, ideas, facts, photos, news clips or other expression that did not originate from yourself. This applies even if the content is publicly available and not confidential. If you have any questions, please contact your IP Attorney.

Prerequisite Knowledge The lab provides all required steps for creating and managing containers with IBM Containers, but familiarity with Docker and Linux is recommended. The participant should also have Docker installed on their laptop. For those needing an introduction on Docker, please consult https://docs.docker.com. Experience in application development and cloud computing is welcome, but not mandatory.

Introduction In this lab, you will learn how to get started using IBM Containers, a new IBM offering for managing containers on IBM Bluemix. Use IBM Containers to run Docker containers in a hosted cloud environment on IBM Bluemix. IBM Containers helps you build and deploy containers where you can package your applications and services. Each container is based on an image format, includes a set of standard operations, and is an execution environment in itself. Containers are virtual software objects that include all the elements that an application needs to run. Each container includes just the app and its dependencies, running as an isolated process on the host operating system. Therefore, it has the benefits of resource isolation and allocation, but is more portable and efficient. Containers help you build highquality apps, fast. IBM Bluemix provides the IBM Containers infrastructure as a feature that is available in selected regions. Containers enable you to build your app in any language, with any programming tools. A container is created from an image, which is a read-only template. Containers can be run, started, stopped, moved, and deleted. Each container is an isolated and secure application platform. Apps in containers can run anywhere: development workstations that are running OS X or Windows, servers that are running Ubuntu, or production data center VMs that are running Red Hat. The IBM Containers engine's lightweight run time enables rapid scale-up and scale-down in response to changes in demand. On Bluemix, you start developing with containers by using a trusted container image. With your org's private registry, you can automate your build pipeline and share artifacts with collaborators through public or private registries. Containers simplify system administration by providing standardized environments for development and production teams. They help remove the complexity of managing different operating system platforms and underlying infrastructure. Containers help you deploy and run any app on any infrastructure, quickly and reliably.

Objectives In this tutorial, you learn how to: Task 1 Create and deploy a container (Docker Image) in Bluemix: Access the IBM Bluemix UI leveraging the accounts provided Create an IBM container from the Bluemix dashboard and set up your private repository namespace Deploy the IBM Liberty image in a container Task 2 Update a Docker image and deploy a scalable container: Obtain the Etherpad web application code from Git Pull an image from the IBM Containers Registry Update the image to include the web application and its dependencies Push the updated image to the IBM Containers Registry Use the updated image to create and deploy a scalable container from the Bluemix dashboard Task 3 Add a Bluemix service to a container Create a Cloud Foundry application to bind predefined cloud services to a container. Add the Bluemix Watson Q&A service and update our Etherpad docker image to leverage this service Build a new image and push to Bluemix Deploy the image as a single container Audience This lab is aimed at developers and architects. Time required This tutorial will take approximately 35 minutes to complete with additional homework assignments.

Task 1 Deploy a Docker Image using IBM Containers on Bluemix Objectives Access the IBM Bluemix UI leveraging the accounts provided Create an IBM container from the Bluemix dashboard and set up your private repository namespace Deploy the IBM Liberty image in a container Deploy a Docker Image using IBM Containers on Bluemix Log in to Bluemix Start your web browser (we recommend Firefox). Open a tab on the Bluemix web console with the following URL: https://console.ng.bluemix.net

Sign in with the IBM ID and password provided for use during this lab. You are now logged on to IBM Bluemix. You see the Dashboard with Apps and Services. Note: Click anywhere on the dashboard to remove the message regarding the trial duration. Create a container After you have access to IBM Bluemix, you will be able to go to the Create a Container page. 1. Click IBM Containers on the top banner. 2. Click Create a Container.

Set up the private registry namespace In IBM Bluemix, the Registry is a central repository within an organization where you store your trusted Docker images. You can push and pull images from the registry. You can deploy these images to any development, staging or production environment. The first time you create a container within an organization, you will be prompted to enter a name for the private repository namespace that is associated with the Registry. The registry's namespace is used to generate a unique URL that you use to access your private Docker registry. The URL is required whenever you perform an action, such as a pull request or a push request of an image, to the Registry. Note: The name of the registry namespace cannot be changed after it is set for an organization. The registry name can only contain lowercase letters, numbers, and underscores. Many of the namespaces have been set already. If your namespace is set, please proceed to the Deploy your first IBM Container. 1. Enter ibm_containers_xxx (where xxx is the number of your account provided for this lab) as the name of your registry. 2. Click Save.

3. Click Continue. Deploy your first IBM Container After setting the namespace, you are taken by default to the Create a Container window. (Note: If you have gone back to the Bluemix dashboard, click Create a Container.) 1. Select the IBM Liberty image (ibmliberty) from the list of images available in the registry. 2. Provide a name for the container. Enter libertydemo1. 3. Choose the size of the container: Select Tiny (256MB, 1 GB).

Note: The size of a container cannot be changed once it has been created. 4. Choose the container s deployment method: Select Deploy as a single container. Note: The option Deploy a scalable group deploys multiple instances of the same image and a load balancer for the group responsible for the distribution of incoming requests. You can set a GoRoute domain name for the group. You can enable autorecovery so that a new instance is launched if a container s instance in the group crashes. 5. Associate a publicly routed IP address to the newly created container: Select the option Request and bind a new public IP. Note: All containers are deployed with a private IP address to enable inter-container connectivity. 6. Configure the public port 9080 that is going to be used to access the container.

7. Optional: Enter the SSH key that is required to authenticate the container. Note: If you want to use an SSH key to authenticate a container, you must configure the SSH key when you create the container. For this lab, leave the SSH field blank. We are not using SSH keys. 8. Click Next. A window opens where you can see the summary of the container that you are planning to create and deploy. 9. Click Deploy.

After the container is deployed successfully, you will be redirected to the dashboard overview for this container. 10. Validate access to the container from your browser. Enter http://publicipaddress:9080/) in the browser. Your browser looks like the following image:

Task 2 Update a Docker image and deploy a scalable container Objectives: Obtain the Etherpad web application code from Git Pull an image from the IBM Containers Registry Update the image to include the web application and its dependencies Push the updated image to the IBM Containers Registry Use the updated image to create and deploy a scalable container from the Bluemix dashboard What is Etherpad? Etherpad is a highly customizable Open Source online editor providing collaborative editing in really real-time (http://etherpad.org/). Pre-requisites: 1. Docker installed and ready to use For instructions on how to install Docker, see https://docs.docker.com/installation/

Update a Docker image and deploy a scalable container 1. Download the Docker image for the lab: docker pull docker-registry.mybluemix.net/interconnect/dockerconlab Using: user: interconnect password: lab3545 email: lab3545@ibm.com To complete this task, you run a container that includes the command line interface prerequisites to interact with IBM Containers in Bluemix through the cli. 2. Run the image: docker run --privileged -ti dockerregistry.mybluemix.net/interconnect/dockerconlab As a result, you should be directed to be in the running lab container. a. Login to bluemix using the CLI: cf login -a api.ng.bluemix.net b. Use the user ID, password assigned to you at the beginning of the lab. (This is the userid and password to log in to Bluemix.) c. Login to bluemix container service: cf ic-login Download the Etherpad web application code: 4. From your running lab container, download the Git repository to your working directory: git clone https://hub.jazz.net/git/osowski/etherpad-lite root@d364a9b56cfb:/# git clone https://hub.jazz.net/git/osowski/etherpad-lite Cloning into 'etherpad-lite'... remote: Total 22804 (delta 0), reused 22804 (delta 0) Receiving objects: 100% (22804/22804), 7.88 MiB 123.00 KiB/s, done. Resolving deltas: 100% (15894/15894), done. Checking connectivity... done. 5. Change into the etherpad-lite subdirectory you just created: cd etherpad-lite

Build a customized image and upload the image to the IBM registry: 6. From your running lab container, download the base image from the IBM docker pull registry-ice.ng.bluemix.net/ibmnode:latest 7. Create a new image based on the newly downloaded Dockerfile from the previous section. docker build -t etherpad_bluemix. (Note: The dot at the end of the previous command is required)

8. Tag the image using the namespace that you set at the begging of this tutorial. docker tag -f etherpad_bluemix registryice.ng.bluemix.net/<namespace_here>/etherpad_bluemix where etherpad_bluemix is the name of the image registry-ice.ng.bluemix.net/<namespace_here>/etherpad_bluemix is the name of the image in your private Bluemix repository You can use any name for your image, e.g. etherpad_bluemix_tag1 9. Push the newly tagged image to your private registry hosted in IBM Bluemix. Wait till it completes. docker push registry-ice.ng.bluemix.net/<namespace_here>/etherpad_bluemix

Deploy your new Etherpad image in a scalable group: 10. Access the IBM Bluemix UI (https://bluemix.net): a. Select Dashboard. b. Select IBM Containers. c. Click Create a Container. The Create a Container window opens. 11. Configure the Container Group settings: a. Filter the image list by searching for etherpad to locate the newly uploaded image. b. Provide a name of the group based on the short name given for this lab (i.e., iblue300_etherpad1). c. Change the container size from the default to Tiny (256 MB, 1 GB). d. Change the Deployment method to Deploy as a scalable group. e. Decrease the number of instances to one for demonstration purposes (Note: there is a limitation of the Etherpad application that will not successfully work if the group has more than one instance). f. Change the Route domain to mybluemix.net. g. Click on the Host box to automatically populate the name provided above. h. Change the port to 9080. i. Select Auto-recovery for the group. j. Click Next.

12. Leave the default values on the next screen and click Deploy. 13. After the deployment completes, validate the route name (i.e., http://iblue300_etherpad1.mybluemix.net).

14. Enter a name for your new pad (i.e., Containers) and click OK. a. Your landing page will be similar to this http://iblue300_etherpad1.mybluemix.net/p/containers

Task 3 Add the Watson Question and Answer Service to a container Objectives Create a Cloud Foundry application to bind predefined cloud services to a container. Add the Bluemix Watson Q&A service and update our Etherpad docker image to leverage this service Build a new image and push to Bluemix Deploy the image as a single container Adding Bluemix Watson Capabilities to your Container What is the Watson Q&A Service? The Watson Q&A service provides an Application Programming Interface (API) that lets you add the power of the IBM Watson cognitive computing system to your application. For the full story, see https://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/qaapi/ Create a Cloud Foundry (CF) Application: A cloud foundry application is required if you bind predefined cloud services to a container. You can use one or multiple CF bridge applications to bind multiple services to a container. The CF bridge application, the container, and the services must be hosted in the same IBM Bluemix space within an organization. In IBM Bluemix, when you bind a service to a CF application, the service might inject a set of environment variables to the application that defines the names and details of the service. These environment variables are called VCAP_SERVICES. When you bind a service to a container, the VCAP_SERVICES are passed into the container as an environment variable through an app that acts as a bridge between the container and the service. The container uses these environment variables to look up information from the service, such as endpoint, user, and password.

1. Log into Bluemix (https://bluemix.net) Then, in the Dashboard, a. Navigate to your working space. b. Click CF APPS and then click Create an App. Note: You must create a Cloud Foundry app to bind a service to a container. 2. Choose a type of application. You will be prompted for either a MOBILE or WEB application, select WEB. 3. Choose a runtime for the application. Then, click CONTINUE. You will then be prompted for the runtime of your application. For this workshop, you can choose any runtime, as we are only using the application to aggregate our services. Future workshops will deploy application contents to the necessary runtimes. We chose SDK for Node.js as the runtime for this walkthrough.

4. Give your application a meaningful name such as iblue300etherpadwatson and click FINISH. Note: The name of the APP must be unique. You can see your new application in the Dashboard view. Click it for details. Create the Watson Question and Answer Service: 1. Create a new service instance and bind it to the application. a. Click Overview in the left navigation menu. b. Click ADD A SERVICE OR API on the Overview page.

2. Click Question and Answer from the Watson catalog. 3. Validate the space that is being used, as well as the name of the app. Click Create. 4. Restage your CF application so it can use the Watson Q&A service: click RESTAGE. The Watson Question and Answer service is now ready for use.

Build a new image and push to Bluemix 5. From your running lab container, edit the Dockerfile in the etherpad-lite directory and add the following lines before the run /src/etherpad-lite/bin/installdeps.sh command on line 20. run npm install --prefix /src/etherpad-lite ep_talk_to_watson 6. Create a new image based on the newly updated Dockerfile. docker build -t etherpad_bluemix_watson. (Note: The dot at the end of the command is required) 7. Tag the image. docker tag -f etherpad_bluemix_watson registryice.ng.bluemix.net/<namespace_here>/etherpad_bluemix_watson 8. Push the image to Bluemix. docker push registryice.ng.bluemix.net/<namespace_here>/etherpad_bluemix_watson Deploy the image as a single container 9. Access the IBM Bluemix UI (https://bluemix.net): b. Select Dashboard. c. Select IBM Containers. d. Click Create a Container. The Create a Container window opens.

10. Configure the Container settings: The newest image should be selected by default. For this deployment, we will deploy as a single container. a. Provide a name of the container based on the short name given for this lab (i.e., iblue300_ep_watson1). b. Change the container size from the default to Tiny (256 MB, 1 GB). c. Leave the Deployment method as Deploy as a single container. d. In the Public IP address, select an IP that is already allocated to you and unused, or alternatively choose to request and bind an IP. k. Add 9080 to the Public port. l. Click Next.

11. Select the CF app that was created earlier (i.e., iblue300etherpadwatson). Click Deploy. After successful deployment, you will be redirected to an overview for this container. Note: Write down the public IP address. 12. Open a web browser to that IP and port 9080 (i.e., http://129.41.237.71:9080/). Then, create a new Pad (i.e., Watson). Click OK. On the bottom line, enter the text @watson Ask me: What is SPF? and press Enter on the keyboard. You should receive a response from Watson.

CONGRATULATIONS, you have completed the IBM Containers tutorial!! Thank you for your time. We d love to hear your feedback, suggestions, and use cases for IBM Containers (Chris Rosen / crosen@us.ibm.com / @ChrisRosen188, Lin Sun / linsun@us.ibm.com / @LinSun_unc).

Appendix 1 IBM Containers Documentation IBM Containers documentation You can access the IBM Containers documentation at the following URL: http://www.ng.bluemix.net/docs/#starters/index-gentopic3.html You can access documentation on ICE commands at the following URL: https://www.stage1.ng.bluemix.net/docs/cli/cli.html#container_cli You can also click the View Docs link in the IBM Containers banner: Additional material Tutorials Start using IBM Containers https://trycedocker.mybluemix.net/ Videos Introduction to Continuous Delivery for Containers on IBM Bluemix https://www.youtube.com/watch?v=hasmjytqqjm

IBM Containers Demo https://www.youtube.com/watch?v=1unmo4gttko Workshops Actionable Architecture: Web application hosting using containers (Etherpad Workshop 1) https://developer.ibm.com/bluemix/docs/actionable-architecture-building-web-application-hostingcontainers/ GITHUB Learn how to use an "off the shelf" (off the hub?) Docker image to deploy an io.js application on Bluemix. https://github.com/ibm-bluemix/bluemix-hello-iojs-container Blog posts 5 game-changing capabilities from IBM Containers on Bluemix http://archive.thoughtsoncloud.com/2015/02/5-game-changing-capabilities-from-ibm-containers-onbluemix/ IBM Containers Extension (ice) CLI Tutorial http://ibmjstart.com/blog/2015/05/26/ibm-containers-extensionice-cli-tutorial/ Hybrid Deployment of Docker Containers using IBM UrbanCode Deploy https://developer.ibm.com/bluemix/2015/04/29/hybrid-deployment-docker-containers-using-ibmurbancode-deploy/ Installing Docker for Windows: Fixes for common problems https://developer.ibm.com/bluemix/2015/04/16/installing-docker-windows-fixes-common-problems/

Appendix 2- IBM Containers Component s Overview The following figure shows the components required when you use IBM Containers to run applications in IBM Bluemix: The private Bluemix repository In IBM Bluemix, the private Bluemix repository is a central repository within an organization where you store your trusted Docker images. You can push and pull images from the registry. You can deploy these images to any development, staging or production environment. The first time you create a container within an organization, you will be prompt to enter a name for the namespace that is associated with the private Bluemix repository. The namespace is used to generate a unique URL that you use to access your private Bluemix repository. The URL is required whenever you perform an action, such as a pull request or a push request of an image, to the Registry. Container Containers are virtual software objects that include all the elements that an application needs to run. Containers are transient objects that do not persist data. When you deploy a container in IBM Bluemix, you launch an instance of an image.

Container group A container group includes one or more containers. You can load-balance the containers in the group by adding a DNS route in front of the group. You can also configure auto-recovery for failed instances. Image A container is built from a Docker image and holds an application including all its dependencies. You can have any number of Docker images in the Registry. By default, IBM Containers provides two images: Liberty image Node image Storage volume A storage volume is used to persist or share data between containers. You can share and reuse storage volumes between containers. If you have multiple containers in a container group, these containers can share storage volumes. You can make changes to a storage volume directly. A storage volume is not affected by any update you make to an image. A storage volume is persistent. If you delete a container, the storage volume is not deleted. The lifecycle of a storage volume is independent from the lifecycle of a container. You can add one more storage volumes after a container is created. Service Predefined services are available in IBM Bluemix. These services simplify the implementation and management of applications running within a container. You can use these services to focus on your application logic and application design. Note: In IBM Containers, you cannot work with IBM Bluemix services that do not bind to a Cloud Foundry application. Cloud Foundry (CF) Bridge Application A cloud foundry application is required if you bind predefined cloud services to a container. You can use one or multiple CF bridge applications to bind multiple services to a container. The CF bridge application, the container, and the services must be hosted in the same IBM Bluemix space within an organization. In IBM Bluemix, when you bind a service to a CF application, the service might inject a set of environment variables to the application that defines the names and details of the service. These environment variables are called VCAP_SERVICES. When you

bind a service to a container, the VCAP_SERVICES are passed into the container as an environment variable through an app that acts as a bridge between the container and the service. The container uses these environment variables to look up information from the service, such as endpoint, user, and password. To work with IBM Containers from a command line (CLI), you can use different interfaces: Docker commands: You can use Docker commands to manage the private Bluemix repository and to manage containers. IBM Containers extension (ICE): You can use IBM Containers extension commands (ice) to manage your containers. Cloud Foundry (CF) commands: You can use Cloud Foundry (cf) commands to manage your applications. When to use containers or container groups When you create a container, you can choose to create a single container or a container group. Single container: Use a single container to run simple tests as you develop an application or service. To use your own networking front end, you can have a public IP address assigned to the container. Container group: Use a container group for production workloads and testing at scale. You have the ability to place a load-balanced DNS route in front of your group of containers as well as the option to auto-recover failed instances.

Appendix 3 - Planning the design of IBM Containers When you use IBM Containers to run your applications in IBM Bluemix, you must design them to fulfill your organization's functional and non-functional requirements. IBM Containers is one of the options that you can use in IBM Bluemix to host and run your applications. This infrastructure allows you to run Docker containers in a hosted Cloud environment. Containers are virtual software objects that include all the elements that an application needs to run. A container is built from an image, which holds an application. Each image includes just the application and its dependencies, running as an isolated process on the host operating system. Therefore, it has the benefits of resource isolation and allocation, but is more portable and efficient than running the application on dedicated hardware or virtual machines. Containers help you build high-quality applications fast. When you choose IBM Containers to run your applications, you are taking the first design step towards your cloud strategy. You are abstracting the infrastructure needs outside of the application so that you can handle them through management and operation interfaces available in IBM Bluemix. Application lifecycles and infrastructure lifecycles change at different times. By using IBM Containers, you are enabling flexibility in your IT infrastructure. You should consider the following guidelines when you are planning to use IBM Containers to run your applications: 1. Choose a unique namespace to access the IBM Containers private Bluemix repository. In IBM Bluemix, the private Bluemix repository is a central repository within an organization where you store your trusted Docker images. You can push and pull images from the registry. You can deploy these images to any development, staging or production environment. The first time you create a container within an organization, you will be prompt to enter a name for the namespace that is associated with the repository. The namespace is used to generate a unique URL that you use to access your private Docker registry. The URL is required whenever you perform an action, such as a pull request or a push request of an image, to the repository. The following rules apply to private repository names: The name cannot be changed after it is set for an organization. The name can only contain lowercase letters, numbers, and underscores. The name starts with at least one letter or number. The minimum total number of characters is 4. The maximum total number of characters is 30.

2. Choose whether to create a container or a container group. In IBM Containers, when you create a container, you can choose to create a single container or a container group: Single container: Use a single container to run simple tests as you develop an application or service. To use your own networking front end, you can have a public IP address assigned to the container. Container group: Use a container group for production workloads and testing at scale. You have the ability to place a load-balanced DNS route in front of your group of containers, as well as the option to enable auto-recovery of failed instances. Consider the following rules when you create a container or container group: a. The name of a container or container group only contains alpha-numeric characters and underscore. b. You can choose different sizes (tiny, small, etc) for a container. Once a container is created with a size, you cannot modify it. c. Optional: Containers do not persist data. Containers are transient objects. If you need to persist application data between restarts of a container, add one or more storage volumes to the container. You can share storage volumes between containers. If you have multiple containers in a container group, these containers can share storage volumes. You can add one more storage volumes after a container is created. d. To allow logging, you must configure port 22 when you create a container or container group. e. Optional: If your application requires functionality offered by other IBM Bluemix services, consider the following guidelines: You need to add a Cloud Foundry application to the organization's space where the container and the services that are bind to the container are created. This application acts as a bridge application between services and the container. It stores the VCAP_SERVICES (environment variables) that the application running in the container uses to access the services. You cannot add IBM Bluemix services that do not bind to a Cloud Foundry application.