{"id":50053,"date":"2026-06-23T06:16:58","date_gmt":"2026-06-23T06:16:58","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=50053"},"modified":"2026-06-23T06:18:09","modified_gmt":"2026-06-23T06:18:09","slug":"openshift-lab-3-install-an-application-from-a-linux-container-image-repository-using-the-openshift-web-console","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/openshift-lab-3-install-an-application-from-a-linux-container-image-repository-using-the-openshift-web-console\/","title":{"rendered":"Openshift: Lab 3 &#8211; Install an application from a Linux container image repository using the OpenShift web console"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What the lab teaches<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The lab teaches how to use the <strong>OpenShift web console<\/strong> to deploy an application directly from a public container image repository. It uses the <strong>Deploy Image<\/strong> flow in the Developer perspective, where OpenShift pulls the container image and creates a running application from it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites covered<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Learners should understand:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Topic<\/th><th>Why it matters<\/th><\/tr><\/thead><tbody><tr><td>Container images<\/td><td>The app is deployed from an existing image<\/td><\/tr><tr><td>Container image repositories<\/td><td>The image is pulled from a registry such as Quay<\/td><\/tr><tr><td>OpenShift web console<\/td><td>The lab uses the UI, not CLI<\/td><\/tr><tr><td>Administrator and Developer perspectives<\/td><td>Learners navigate the Developer <code>+Add<\/code> workflow<\/td><\/tr><tr><td>OpenShift and Kubernetes relationship<\/td><td>OpenShift runs the container workload on Kubernetes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Main lab flow<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Step<\/th><th>Action<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>Open the Developer Sandbox<\/td><\/tr><tr><td>2<\/td><td>Log in with a Red Hat account<\/td><\/tr><tr><td>3<\/td><td>Open the OpenShift web console<\/td><\/tr><tr><td>4<\/td><td>Go to <strong>Developer perspective<\/strong><\/td><\/tr><tr><td>5<\/td><td>Click <strong>+Add<\/strong><\/td><\/tr><tr><td>6<\/td><td>Select <strong>Container images<\/strong><\/td><\/tr><tr><td>7<\/td><td>Open the <strong>Deploy Image<\/strong> tab<\/td><\/tr><tr><td>8<\/td><td>Enter image name: <code>quay.io\/openshiftroadshow\/parksmap:1.3.0<\/code><\/td><\/tr><tr><td>9<\/td><td>Select <strong>Deployment<\/strong> as the resource type<\/td><\/tr><tr><td>10<\/td><td>Click <strong>Create<\/strong><\/td><\/tr><tr><td>11<\/td><td>View the app in the <strong>Topology<\/strong> page<\/td><\/tr><tr><td>12<\/td><td>Open the app using the URL icon<\/td><\/tr><tr><td>13<\/td><td>Delete the application from Topology<\/td><\/tr><tr><td>14<\/td><td>Confirm deletion by entering the application name<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What OpenShift creates<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When the image is deployed, OpenShift downloads the container image and creates a running containerized application in the cluster. For a web application, OpenShift can expose it through a URL\/route so the user can open it in a browser.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">CLI equivalent for the same lab<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The PDF uses the web console, but the closest <code>oc<\/code> equivalent is:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">oc <span class=\"hljs-keyword\">new<\/span>-project parksmap-demo\n\noc <span class=\"hljs-keyword\">new<\/span>-app quay.io\/openshiftroadshow\/parksmap:<span class=\"hljs-number\">1.3<\/span><span class=\"hljs-number\">.0<\/span> --name=parksmap\n\noc expose service\/parksmap\n\noc <span class=\"hljs-keyword\">get<\/span> pods\noc <span class=\"hljs-keyword\">get<\/span> service\noc <span class=\"hljs-keyword\">get<\/span> route\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">To test the route:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">curl -I http:<span class=\"hljs-comment\">\/\/$(oc get route parksmap -o jsonpath='{.spec.host}')<\/span>\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">To clean up:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">oc <span class=\"hljs-keyword\">delete<\/span> all -l app=parksmap\noc <span class=\"hljs-keyword\">delete<\/span> route parksmap\noc <span class=\"hljs-keyword\">delete<\/span> project parksmap-demo\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"wp-block-paragraph\">Main difference from Lab 2: <strong>Lab 2 builds an app from GitHub source code using S2I; Lab 3 deploys a prebuilt container image from a registry.<\/strong><\/p>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/07\/Openshift-Lab-3.pdf\" type=\"application\/pdf\" style=\"width:100%;height:2000px\" aria-label=\"Embed of Openshift Lab 3.\"><\/object><a id=\"wp-block-file--media-704e7d22-b811-4be4-abd8-6d631260d61e\" href=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/07\/Openshift-Lab-3.pdf\">Openshift Lab 3<\/a><a href=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2025\/07\/Openshift-Lab-3.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-704e7d22-b811-4be4-abd8-6d631260d61e\">Download<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>What the lab teaches The lab teaches how to use the OpenShift web console to deploy an application directly from a public container image repository. It uses&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5153],"tags":[],"class_list":["post-50053","post","type-post","status-publish","format-standard","hentry","category-openshift"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=50053"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50053\/revisions"}],"predecessor-version":[{"id":77146,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/50053\/revisions\/77146"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=50053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=50053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=50053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}