Link Search Menu Expand Document

Supported Environments

The following environments are currently supported for interactive content:

Environment Image ID Notes

Ubuntu 22.04

ubuntu:22.04

Docker installed and running

Ubuntu 22.04 w/two hosts

ubuntu-2node:22.04

Docker installed and running

Implementation Notes

Preconfigured with ssh key auth to shell into the second node

Ubuntu 22.04

ubuntu2204-base-image-v1:latest

Without Docker

Implementation Notes

This is faster to start and uses fewer resources than the 22.04 w/docker. If your lab does not need docker this is a good choice.

Ubuntu 20.04

ubuntu:2004

Docker installed and running

Ubuntu 20.04 (4GB)

ubuntu:2004-4gb

Docker installed and running on an image with 4GB of ram (note that there may be a slight startup time penalty when using this image).

Ubuntu 20.04 (8GB)

ubuntu:2004-8gb

Docker installed and running on an image with 8GB of ram (note that there may be a slight startup time penalty when using this image).

Rocky Linux

rocky:9.2

Rocky Linux

rocky:8.4

Kubernetes 1.29.2

kubernetes:1.29-44

2 node cluster with 1 controlplane, 1 worker node. Based on Ubuntu 22.04. Include "launch" in your foreground script to display a progress bar that exits when K8S is fully initialized.

Implementation Notes

There are variant imageids available:

kubernetes-vscode:1.29-44 – Automatically starts vscode kubernetes-nostart:1.29-44 – Does not start kubernetes

Kubernetes 1.28.2

kubernetes-running:1.28.2

2 node cluster with 1 controlplane, 1 node. Based on Ubuntu. Run launch.sh when the scenario starts to ensure cluster is running.

Implementation Notes

The cluster might still be starting when the user is connected. To provide the user with feedback, we recommend that you automatically run a script called launch.py when the user connects by calling it inside of your foreground.sh or background.sh file(s). This can be done automatically via a Foreground Script.

Without running launch.py, users will see the following error when they attempt to access Kubernetes before it has started: The connection to the server localhost:8080 was refused - did you specify the right host or port?

If you are planning to use the kubectl port-forward functionality within your scenario then please be aware that by default this only accepts connections from 127.0.0.1 and as such the Katacoda Proxy won’t be able to access the port. Instead, please ensure that the command binds to 0.0.0.0 using kubectl port-forward --address 0.0.0.0.

Ansible 2.13 w/two hosts

ansible-2node:2.13

Ansible and support packages pre-installed

Implementation Notes

Preconfigured with ssh key auth to shell into the second node

Java

java:latest

Our default java envionment, currently openjdk:21

Java/Scala

scala:latest

Our default java environment with scala 3

Kali Linux

kali:2023.1

Kali Linux

kali:2022.4

Kotlin

kotlin:latest

Our default java environment with Kotlin 1.7

Python 3.11.3

python:3.11

Python 3.8

python:3.8

Django

django:3.0

Anaconda

anaconda:2022.10

This is a full anaconda (2022.10) install, including Python, PyTorch, NLTK, numpy, and scikit-learn. We recommend that Python ML labs use this environment to make startup/setup simpler and faster.

Go

golang:1.25.1

Rust

rust:1.75.0

Ruby

ruby:3.2

C# (dotnet core 7.0)

dotnet:7.0

C# (dotnet core 6.0)

dotnet:6.0

R

rlang:3.6.3

Node.js

nodejs:18

Swift 5.9

swift:5.9

TypeScript

typescript:5.0

C++

cplusplus:13.1

C++ a high-level, general-purpose programming language sandbox

Bash

bash:5.1

Lightweight Linux instance without Docker

Azure

orm-azure

Microsoft Azure cloud labs environment

Spring Boot 3.0

springboot:3.0

A java 19 environment with Spring Boot 3.0 demo project in /root/demo

NOTE: If you aren’t able to access the code links in the preceding table, please email interactivesupport@oreilly.com to request access.

Exploring the Environments (What’s Installed?)

Environments come preloaded with a number of common languages and tools. If you need to know which version of a package is currently installed (or are simply curious), open up the environment sandbox you’re interested in and run whatever version or existence commands you would like. For example, in the Ubuntu sandbox you might run:

lsb_release -a
gcc --version
perl --version
ruby --version
node --version
go version
java -version
javac -version
docker version
docker-compose version
pip --version
python --version
pip3 --version
python3 --version
dotnet --version

Or to list all packages installed:

apt list --installed > out
cat out

If you don’t see the package(s) or tool(s) you need for your labs, chances are they can be provided to the lab environment via a foreground or background script.

Deprecated Environments

The following scenario environments will soon be deprecated and/or are no longer supported. Image IDs in gray will soon reach end-of-life; image IDs in red are no longer supported and will not be accessible by learners on the platform:

Name Image ID
Bash bash1804
Docker docker
Ubuntu ubuntu:1804, ubuntu:1904 , ubuntu:1604 , ubuntu
Kubernetes kubernetes-cluster, kubernetes-cluster:1.14 , kubernetes-cluster:1.18 , kubernetes-cluster:1.23 , kubernetes-cluster:1.24 , kubernetes-cluster:1.26 , kubernetes-cluster:1.28
Kubernetes Running kubernetes-cluster-running, kubernetes-cluster-running:1.14 , kubernetes-cluster-running:1.18 , kubernetes-cluster-running:1.23 , kubernetes-cluster-running:1.24 , kubernetes-cluster-running:1.26 , kubernetes-cluster-running:1.28
R rlang, rlang:3.4
Java/Scala openjdk:15
Kotlin kotlin:1.3.61
Python python:3.6, python:3.7
Rust rust:1.67.1, rust:1.44.1
Node nodejs:12

Please be sure to select a newer version of the desired environment from the preceding list; if you have questions or are concerned about updating existing interactive content, please reach out to your editor or technical instructional designer.