我正在通过article从头开始构建容器而不使用docker,只需使用linux系统调用,如chroot,unshare,nsenter等。
docker内部是这些系统调用的包装器,似乎docker exec没有按照这个answer使用nsenter
如果docker正在使用golang二进制文件,那么它将用于进行这些系统调用。
或者码头工具是lxc的包装,但根据answer
,它似乎不适合我。任何人都可以向我指出docker目前用于构建容器的确切低级别内容(系统调用/ lxc等)。
答案 0 :(得分:2)
Docker不是LXC的包装器。在过去,它确实使用基于LXC的机制来启动容器,但那是replaced by a native implementation。
由于Docker是一个开源项目,您可以通过浏览the source(从been renamed "moby"开始),看到完全它正在做什么。
实际创建容器由libcontainer组件处理。