我正在通过article从头开始构建容器而不使用docker只是通过使用linux系统调用,如chroot,unshare,nsenter等。
docker内部是这些系统调用的包装器,似乎docker exec没有使用nsenter,因为这个answer
如果docker正在使用golang二进制文件,那么它将用于进行这些系统调用。
或者码头工具是围绕lxc的包装,但在我看来并不像这个answer
任何人都可以指出Docker当前用来构建容器的确切低级别的东西(系统调用/ lxc等)。
Docker不是LXC的包装器。在过去,它确实使用基于LXC的机制来启动容器,但这就是replaced by a native implementation。
由于Docker是一个开源项目,你可以通过浏览the source(自been renamed "moby"以来)来查看它正在做什么。
容器的实际创建由libcontainer组件处理。