Project in C++ Skill Tree

Creating a Simple Docker Container in C++

Beginner

In this project, we will combine C++ with Linux's Namespace and Control Group technologies to implement a simple Docker container that achieves functionalities such as independent file system, support for network access, and limitation of container resources.

C++Docker

Introduction

The essence of Docker is to use LXC to achieve virtual machine-like functionality, thus saving hardware resources and providing users with more computational resources. This project combines C++ with Linux's Namespace and Control Group technologies to implement a simple Docker container.

Finally, we will achieve the following functionalities for the container:

  1. Independent file system
  2. Support for network access

👀 Preview

$ make
make container
make[1]: Entering directory '/home/labex/project'
gcc -c network.c nl.c
g++ -std=c++11 -o docker-run main.cpp network.o nl.o
make[1]: Leaving directory '/home/labex/project'
$ sudo ./docker-run
...start container
root@labex:/## ifconfig
eth0      Link encap:Ethernet  HWaddr 00:16:3e:da:01:72
          inet6 addr: fe80::dc15:18ff:fe43:53b9/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:38 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5744 (5.7 KB)  TX bytes:726 (726.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

🎯 Tasks

In this project, you will learn:

  • How to create a simple Docker container using C++ and Linux's Namespace technology
  • How to implement an independent file system for the container
  • How to enable network access for the container

🏆 Achievements

After completing this project, you will be able to:

  • Create a simple Docker container using C++ and Linux's Namespace technology
  • Implement an independent file system for the container
  • Enable network access for the container

Teacher

labby

Labby

Labby is the LabEx teacher.

Recommended For You

no data