프로젝트 의 C++ 스킬 트리

C++ 로 간단한 Docker 컨테이너 만들기

초급

본 프로젝트에서는 C++ 와 Linux 의 Namespace 및 Control Group 기술을 결합하여 독립적인 파일 시스템, 네트워크 접근 지원, 컨테이너 리소스 제한 등 기능을 구현하는 간단한 Docker 컨테이너를 만들 것입니다.

cpp

💡 이 튜토리얼은 영어로 번역되었습니다. 원본을 보려면 영어로 전환

소개

Docker 의 본질은 LXC 를 사용하여 가상 머신과 유사한 기능을 달성하여 하드웨어 리소스를 절약하고 사용자에게 더 많은 컴퓨팅 리소스를 제공하는 것입니다. 이 프로젝트는 C++ 와 Linux 의 Namespace 및 Control Group 기술을 결합하여 간단한 Docker 컨테이너를 구현합니다.

결과적으로, 우리는 컨테이너에 대해 다음과 같은 기능을 달성할 것입니다:

  1. 독립적인 파일 시스템
  2. 네트워크 접근 지원

👀 미리보기

$ 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)

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • C++ 와 Linux 의 Namespace 기술을 사용하여 간단한 Docker 컨테이너를 만드는 방법
  • 컨테이너를 위한 독립적인 파일 시스템을 구현하는 방법
  • 컨테이너의 네트워크 접근을 활성화하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • C++ 와 Linux 의 Namespace 기술을 사용하여 간단한 Docker 컨테이너를 만들 수 있습니다.
  • 컨테이너를 위한 독립적인 파일 시스템을 구현할 수 있습니다.
  • 컨테이너의 네트워크 접근을 활성화할 수 있습니다.

강사

labby
Labby
Labby is the LabEx teacher.

추천 코스

no data