[id="understanding-odo"] = Understanding `odo` include::modules/developer-cli-odo-attributes.adoc[] include::modules/common-attributes.adoc[] :context: understanding-odo toc::[] `{odo-title}` is a CLI tool for creating applications on {product-title} and Kubernetes. With `{odo-title}`, you can write, build, and debug applications on a cluster without the need to administer the cluster itself. Creating deployment configurations, build configurations, service routes and other {product-title} or Kubernetes elements are all automated by `{odo-title}`. Existing tools such as xref:../../cli_reference/openshift_cli/getting-started-cli.adoc#cli-about-cli_cli-developer-commands[`oc`] are operations-focused and require a deep understanding of Kubernetes and {product-title} concepts. `{odo-title}` abstracts away complex Kubernetes and {product-title} concepts allowing developers to focus on what is most important to them: code. [id="odo-key-features"] == Key features `{odo-title}` is designed to be simple and concise with the following key features: * Simple syntax and design centered around concepts familiar to developers, such as projects, applications, and components. * Completely client based. No additional server other than {product-title} is required for deployment. * Official support for Node.js and Java components. * Partial compatibility with languages and frameworks such as Ruby, Perl, PHP, and Python. * Detects changes to local code and deploys it to the cluster automatically, giving instant feedback to validate changes in real time. * Lists all the available components and services from the cluster. == Core concepts Project:: A project is your source code, tests, and libraries organized in a separate single unit. Application:: An application is a program designed for end users. An application consists of multiple microservices or components that work individually to build the entire application. Examples of applications: a video game, a media player, a web browser. Component:: A component is a set of Kubernetes resources which host code or data. Each component can be run and deployed separately. Examples of components: Node.js, Perl, PHP, Python, Ruby. Service:: A service is software that your component links to or depends on. Examples of services: MariaDB, Jenkins, MySQL. In `{odo-title}`, services are provisioned from the OpenShift Service Catalog and must be enabled within your cluster. [id="odo-supported-languages-and-images"] === Officially supported languages and corresponding container images .Supported languages, container images, package managers, and platforms [options="header"] |=== |Language |Container image |Package manager |Platform |*Node.js* |https://access.redhat.com/containers/#/registry.access.redhat.com/rhscl/nodejs-10-rhel7[rhscl/nodejs-10-rhel7] |NPM |amd64, s390x, ppc64le | |https://access.redhat.com/containers/#/registry.access.redhat.com/rhscl/nodejs-12-rhel7[rhscl/nodejs-12-rhel7] |NPM |amd64, s390x, ppc64le |*Java* |https://access.redhat.com/containers/#/registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift[redhat-openjdk-18/openjdk18-openshift] |Maven, Gradle |amd64, s390x, ppc64le | |https://access.redhat.com/containers/#/registry.access.redhat.com/openjdk/openjdk-11-rhel8[openjdk/openjdk-11-rhel8] |Maven, Gradle |amd64, s390x, ppc64le | |https://access.redhat.com/containers/#/registry.access.redhat.com/openjdk/openjdk-11-rhel7[openjdk/openjdk-11-rhel7] |Maven, Gradle |amd64, s390x, ppc64le |=== [id="odo-listing-available-images"] ==== Listing available container images [NOTE] ==== The list of available container images is sourced from the cluster's internal container registry and external registries associated with the cluster. ==== To list the available components and associated container images for your cluster: . Log in to the cluster with `{odo-title}`: + [source,terminal] ---- $ odo login -u developer -p developer ---- . List the available `{odo-title}` supported and unsupported components and corresponding container images: + [source,terminal] ---- $ odo catalog list components ---- + .Example output [source,terminal] ---- Odo Devfile Components: NAME DESCRIPTION REGISTRY java-maven Upstream Maven and OpenJDK 11 DefaultDevfileRegistry java-openliberty Open Liberty microservice in Java DefaultDevfileRegistry java-quarkus Upstream Quarkus with Java+GraalVM DefaultDevfileRegistry java-springboot Spring Boot® using Java DefaultDevfileRegistry nodejs Stack with NodeJS 12 DefaultDevfileRegistry Odo OpenShift Components: NAME PROJECT TAGS SUPPORTED java openshift 11,8,latest YES dotnet openshift 2.1,3.1,latest NO golang openshift 1.13.4-ubi7,1.13.4-ubi8,latest NO httpd openshift 2.4-el7,2.4-el8,latest NO nginx openshift 1.14-el7,1.14-el8,1.16-el7,1.16-el8,latest NO nodejs openshift 10-ubi7,10-ubi8,12-ubi7,12-ubi8,latest NO perl openshift 5.26-el7,5.26-ubi8,5.30-el7,latest NO php openshift 7.2-ubi7,7.2-ubi8,7.3-ubi7,7.3-ubi8,latest NO python openshift 2.7-ubi7,2.7-ubi8,3.6-ubi7,3.6-ubi8,3.8-ubi7,3.8-ubi8,latest NO ruby openshift 2.5-ubi7,2.5-ubi8,2.6-ubi7,2.6-ubi8,2.7-ubi7,latest NO wildfly openshift 10.0,10.1,11.0,12.0,13.0,14.0,15.0,16.0,17.0,18.0,19.0,20.0,8.1,9.0,latest NO ---- + The `TAGS` column represents the available image versions, for example, `10` represents the `rhoar-nodejs/nodejs-10` container image. To learn more about CLI commands, go to xref:../../cli_reference/developer_cli_odo/odo-cli-reference.adoc#basic-odo-cli-commands_odo-cli-reference[odo CLI reference].