プロジェクト in C++ Skill Tree

C++ でシンプルな Docker コンテナを作成する

初級

このプロジェクトでは、C++ と Linux の名前空間 (Namespace) およびコントロールグループ (Control Group) 技術を組み合わせて、独立したファイルシステム、ネットワークアクセスのサポート、コンテナリソースの制限などの機能を実現するシンプルな Docker コンテナを実装します。

C++Docker

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

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.