Student Success
Bootcamp Programs
Short Courses
Portfolio Courses
Bootcamp Programs

Launch your career in Data and AI through our bootcamp programs

  • Industry-leading curriculum
  • Real portfolio/industry projects
  • Career support program
  • Both Full-time & Part-time options.
Data Science Bootcamp

Become a data engineer by learning how to build end-to-end data pipelines


Become a data analyst through building hands-on data/business use cases

Become an AI/ML engineer by getting specialized in deep learning, computer vision, NLP, and MLOps

Become a DevOps Engineer by learning AWS, Docker, Kubernetes, IaaS, IaC (Terraform), and CI/CD

Short Courses

Improve your data & AI skills through self-paced and instructor-led courses

  • Industry-leading curriculum
  • Portfolio projects
  • Part-time flexible schedule
Portfolio Courses

Learn to build impressive data/AI portfolio projects that get you hired

  • Portfolio project workshops
  • Work on real industry data & AI project
  • Job readiness assessment
  • Career support & job referrals

Build data strategies and solve ML challenges for real clients

Help real clients build BI dashboard and tell data stories

Build end to end data pipelines in the cloud for real clients


Choose to learn at your comfort home or at one of our campuses

Corporate Partners

We’ve partnered with many companies on corporate upskilling, branding events, talent acquisition, as well as consulting services.

AI/Data Transformations with our customized and proven curriculum

Do you need expert help on data strategies and project implementations? 

Hire Data, AI, and Engineering talents from WeCloudData

Student Success

Meet our amazing alumni working in the Data industry

Read our students’ stories on how WeCloudData have transformed their career


Check out our events and blog posts to learn and connect with like-minded professionals working in the industry

Read blogs and updates from our community and alumni

Explore different Data Science career paths and how to get started

Our free courses and workshops gives you the skills and knowledge needed to transform your career in tech


Learning Guide

Install and Run Containers on Linux Virtual Machines – LXD/LXC

October 11, 2022


  • This tutorial is one part of a containers series of tutorials that will walk the reader through installation of tools that can run applications in containers.
  • By the end of these tutorials the reader will be able to
    • Install services (container engines) that can run containers using tools such as LXD/LXC, Docker, or Podman.
    • Launch simple applications packaged in containers from template container images. With some of these virtualization and container engines such as LXD/LXC, you can also run lightweight Linux operating systems (e.g. Ubuntu, CentOS) as containers or lightweight virtual machines.


  • A working Linux, Windows or MacOS operating system.
  • The LXD/LXC section of these tutorials will be done in an Ubuntu Linux virtual machine installed on a MacOS using Multipass.
  • For the rest of these tutorials, the examples will be run on a MacOS operating system, but the reader can refer to the respective software documentation to see how to install and run the relevant steps on other platforms such as Linux or Windows.


Virtualization technology has enabled powerful infrastructure architectures that allow single physical hardware systems to host multiple simulated environments. In essence, it allows the sharing of physical resources from a single pool to multiple isolated environments. With virtualization technology and hypervisors that manage the pool of resources, virtual machines can be created that functions as an isolated computer system with CPU, memory, storage and network components leveraged from the physical host.

This pooling of physical hardware resources to generate multiple virtual machines means the physical resources can be efficiently harnessed to power many processes and enable multiple end users to share the same physical system. This has led to the explosion of cloud infrastructures and platforms.

Even so, though virtual machines are more lightweight than their physical counterparts, containers take this concept one step further. In the diagram below we can see that applications in each isolated virtual machine requires a guest OS to be installed and configured on top of a hypervisor before the applications can be run and executed. Containers are another virtualization technology that enables applications to be run in its own isolated environment with its own packages and configurations. A container engine manages the pool of resources that are distributed to containers. Containers can be created and destroyed on the fly and are less resource-intensive compared to virtual machines.

Virtual machines and containers. Image source: netapp.

With containers, a developer can package everything required to run an application in a container image, share the container image and other users can execute this application with the exact same settings in another system as long as the user has a container engine.

In this series of container tutorials we will use some practical commands to get up and running quickly with container technologies to see how convenient containers are for getting isolated environments for applications. We will explore some container tools such as LXD/LXC, Docker and Podman to get a feel for some of these flavors of container technologies. The reader is encouraged to extend these tutorials and explore further.


  1. First install the container and virtual machine manager LXD.
    • On Ubuntu Linux, update the system package manager library cache by executing sudo apt update
    • Download and install the software packaging and deployment system snap if not already installed sudo apt install -y snap
      • Use snap to download and install lxd with sudo snap install lxd
    • Initialize the lxd configurations with sudo lxd init .
      • Default settings should be fine for initial explorations of the tool.
      • For more in depth configurations read the documentations available here and here.
      • For example, accepting the default settings will start lxd configurations with some of these components:
        • No LXD clustering.
        • A new storage pool.
        • ZFS storage pool backend.
        • A new local network bridge called lxdbr0.
  2. With lxd installed, you can now run containers with the lxc command.
    • To look at the initial list of available images to pull from and run containers, use the lxc image list command.
      • For example, to see available Ubuntu images, run lxc image list ubuntu:
      • This will generate a long list, so you’ll probably want to either use grep to filter the list or use a pager such as less
      • So pipe that command to grep or less
        • lxc image list ubuntu: | grep -i -E 'aarch64.*container'
          • This will retrieve all Ubuntu images that are arm64 architecture as well as container-based images (as opposed to virtual machine specs which are also available)
        • lxc image list ubuntu: | less
          • This will send the retrieved list to the pager less
    • To find information regarding an image before running it, execute the lxc image info command.
      • For example, to find out more about the CentOS 9-Stream image run lxc image info images:centos/9-Stream
      • Note that in images:centos/9-Stream above, images is the server (default for lxc), and after the colon, centos is the Linux distribution, and 9-Stream is the release. The distribution and release are case sensitive so images:Centos/9-Stream and images:centos/9-stream won’t work.
      • For more available images on the lxc default server take a look here.
    • And to launch and run the CentOS 9-Stream execute the command lxc launch images:centos/9-Stream
    • Now list the available containers on your machine with lxc list
  3. Enter your container with lxc exec centos9 /bin/bash .
    • Replace centos9 with whichever name you gave your container.
    • /bin/bash is the login shell, but you can also use another shell such as sh so the command would change to lxc exec centos9 /bin/sh
    • Once in, you can run CentOS 9-Stream linux commands such as cat /etc/os-release or hostnamectl for example.
    • You can also update and install packages using CentOS’s package manager yum as you would in a CentOS virtual machine.
    • CentOS 9-Stream also comes with pre-installed software and packages such as the Python programming language, Linux utilities sed, awk and curl.
      • For example try some of these commands in the CentOS 9-Stream
        • python --version
        • sed --version
        • awk --version
        • curl -I --http2 <>


In this tutorial, we introduced the concept of containers and how to complete some simple tasks involving the installation of the container suite of tools LXD/LXC as well as launching a working CentOS 9-Stream Linux OS container. With a few commands, you were able to have a lightweight Linux distribution containing familiar Linux utilities and tools such as yum, and curl.

In subsequent tutorials we will also explore alternative container engines and tools such as Docker and Podman.


  1. LXD/LXC
  2. Docker
  3. Podman
Join our programs and advance your career in DevOps Engineering

"*" indicates required fields

This field is for validation purposes and should be left unchanged.
Other blogs you might like
Student Blog
The blog is posted by WeCloudData’s Data Science Bootcamp student Ryan Kang.  Like Amazon AWS, Google Cloud is a…
by Student WeCloudData
October 28, 2019
Student Blog
[Student Project] Visualizing New York City Taxi Data This blog is created by WeCloudData’s Data Science Bootcamp alumni Yaoyu…
by Student WeCloudData
October 28, 2019
Learning Guide, WeCloud Faculty
This blog post was written by WeCloudData’s Data Science Instructor, Vinny Nguyen. Hi! I’m Vinny and I’m a data…
by WeCloudData
September 27, 2021

Kick start your career transformation