简介
Docker的本质是利用LXC来实现类似虚拟机的功能,从而节省硬件资源并为用户提供更多计算资源。本项目将C++与Linux的命名空间(Namespace)和控制组(Control Group)技术相结合,实现一个简单的Docker容器。
最后,我们将为容器实现以下功能:
- 独立的文件系统
- 支持网络访问
👀 预览
$ 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
...启动容器
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的命名空间技术创建一个简单的Docker容器
- 如何为容器实现一个独立的文件系统
- 如何为容器启用网络访问
🏆 成果
完成本项目后,你将能够:
- 使用C++和Linux的命名空间技术创建一个简单的Docker容器
- 为容器实现一个独立的文件系统
- 为容器启用网络访问